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

怎么使用正则表达式实现如下功能。
本帖最后由 flyso 于 2013-03-20 13:45:50 编辑
获取的HTML字符串如下:
<html>
<head>
</head>
<body>
<table>
<tr><td class="tll"></td><td class="tlm"></td></tr></table>
...
<ST:TextBox id="T_1_1_t" style="width:160px;height:25px;" src="Control/TextBox.gif" runat="server" tooltip="工程项目名称" /></ST:TextBox>
....
<ST:CheckBox id="CB_1_1_x" style="width:160px;height:25px;" src="Control/TextBox.gif" runat="server" tooltip="选择工程类型" /></ST:CheckBox>
</body>
</html>
怎么用正则表达式将所有
包括 <ST 的控件的属性 tooltip和id属性放入集合中(可以是泛型)

然后当做数据源绑定到DropDownList

绑定后最后的HTML效果是
<select ... >
<option value="T_1_1_t">工程项目名称</option>
<option value="CB_1_1_x">选择工程类型</option>
</select>

------解决方案--------------------
   string str ="字符串";
            var list = Regex.Matches(str, @"(?is)<ST:(?=[^>]*?id=([""'])(?<id>[^""']+)\1)(?=[^>]*?tooltip=([""'])(?<tooltip>[^""']+)\2)[^>]*>").OfType<Match>().Select(t => new { id = t.Groups["id"].Value, tooltip = t.Groups["tooltip"].Value }).ToList();
          

------解决方案--------------------
  string txt = "(!is)<option value=\"T_1_1_t\">工程项目名称</option>     <option value=\"CB_1_1_x\">选择工程类型</option>";
            var ma = Regex.Matches(txt, "<option.value=\"(.+?)\">(.+?)</option>").OfType<Match>().Select(x => "value=" + x.Groups[1] + " name=" + x.Groups[2]);
            foreach (var item in ma)
            {
                Console.WriteLine(item);
            }
            Console.Read();