怎么使用正则表达式实现如下功能。
本帖最后由 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();