日期:2014-05-17  浏览次数:20464 次

求一个正则表达式,能够获取一串html里面所有客户端控件的id、name、type属性
在论坛里面找了类似的正则表达式,能够获取name和value:
MatchCollection mc = Regex.Matches(html, @"(?is)<input.*?(?:name[^=]*=.*?(['""]?)(?<name>[^'"" ]*)\1|value[^=]*=.*?(['""]?)(?<value>[^'""]*?)\2| |.)+?>");
  foreach (Match m in mc)
  {
  Console.WriteLine("name is : " + m.Groups["name"].Value);
  Console.WriteLine("value is : " + m.Groups["value"].Value);
  }
现在如果我要同时获取id、name、和type属性应该怎么改呢?
同时也要注意id、name、type的顺序问题,以及页面上也有一些select下拉框,如果是select下拉框就只获取id和name。

------解决方案--------------------
C# code
string html = @"<input id='ss' type='hidden' value='2'/>";
                MatchCollection mc = Regex.Matches(html, @"(?is)<input.*?(?:name[^=]*=.*?(['""]?)(?<name>[^'"" ]*)\1|value[^=]*=.*?(['""]?)(?<value>[^'""]*?)\2|type[^=]*=.*?(['""]?)(?<type>[^'""]*?)\3|id[^=]*=.*?(['""]?)(?<id>[^'""]*?)\4|.)+?>");
                foreach (Match m in mc)
                {
                    Console.WriteLine("id is : " + m.Groups["id"].Value);
                    Console.WriteLine("name is : " + m.Groups["name"].Value);
                    Console.WriteLine("value is : " + m.Groups["value"].Value);
                    Console.WriteLine("type is : " + m.Groups["type"].Value);
                }