我在隐藏字段中发送一些html,在服务器端我将使用正则表达式解析它。目前我能够解析
<div id="4059">asd</div>
并且下面的代码在match.Groups [4]中的match.Groups [2]和“4059”中给出了“id”,“div”在第一个索引处出现,而第3个变为空。
string regex2 = @"<(?<Tag_Name>(a)|div)\b[^>]*?\b(?<URL_Type>(?(1)id))\s*=\s*(?:""(?<URL>(?:\\""|[^""])*)""|'(?<URL>(?:\\'|[^'])*)')";
var matches = Regex.Matches(myDiv, regex2, RegexOptions.IgnoreCase | RegexOptions.Singleline);
var links = new List<string>();
foreach (Match item in matches)
{
if (item.Groups[2].Value == "div")
{
employee.ID = item.Groups[4].Value;
}
]
有人可以编辑这个正则表达式,
<(?<Tag_Name>(a)|div)\b[^>]*?\b(?<URL_Type>(?(1)id))\s*=\s*(?:""(?<URL>(?:\\""|[^""])*)""|'(?<URL>(?:\\'|[^'])*)')
这样我就可以解析了
<div id="5094" fieldA="asd" fieldB="def" fieldC="ghi"></div>
也可以添加字段。
我还应该在这里提一下,我正在开发一个自定义控件,当我在项目中添加它时,我不能使用HTML AGILITY PACK作为程序集冲突。
答案 0 :(得分:0)
如果你已经知道字符串只包含<div field="value" field="value" ...></div>
(即字符串中只有这个div),那么只需简化你的正则表达式来挑选字段和值,并在循环中运行它: / p>
string regstr = @"\s+(?<field>[^\s=]+)\s*=\s*\"(?<value>[^\"]+)\"";
var reg = new Regex(regstr);
var m = reg.Match(myDiv);
while (m.Success)
{
// m.Groups["field"] and m.Groups["value"] hold your field and value
// get the next match
m = m.NextMatch();
}