C# .net 正则表达式 提取 <ul class="lists3">下的 li a href的值 10
代码如下想要的结果集是dcac.htmbbac.htm<ul><li><ahref=abc.htm>abc</a></li></ul><ulclass="lists3">...
代码如下 想要的结果集是
dcac.htm
bbac.htm
<ul>
<li>
<a href=abc.htm>abc</a>
</li>
</ul>
<ul class="lists3">
<li><a href="/dcac.htm">dcac</a></li>
<li><a href="bbac.htm">dcac</a></li>
</ul> 展开
dcac.htm
bbac.htm
<ul>
<li>
<a href=abc.htm>abc</a>
</li>
</ul>
<ul class="lists3">
<li><a href="/dcac.htm">dcac</a></li>
<li><a href="bbac.htm">dcac</a></li>
</ul> 展开
1个回答
展开全部
using System;
using System.Text.RegularExpressions;
public class Test {
private static void ABC(string str, Regex[] rs, int index) {
if(index>rs.Length-1){
return;
}
Regex r=rs[index];
Match m = r.Match(str);
while (m.Success) {
if(index == rs.Length - 1){
Console.WriteLine(m.Groups[1]);
}
for (int i = 0; i < m.Groups.Count; i++) {
Group group = m.Groups[i];
string vv=group.Value;
ABC(vv, rs, index+1);
}
m = m.NextMatch();
}
}
public static void Main() {
string str = "<ul class='lists3'>ss</ul><ul>\r\n<li>\r\n<a href=abc.htm>abc</a>\r\n</li>\r\n</ul>\r\n<UL class=\"lists3\">\r\n<li><a href=\"/dcac.htm\">dcac</a></li>\r\n\r\n<li><a href=\"bbac.htm\">dcac</a></li>\r\n\r\n</ul>";
Regex r1 = new Regex("(?i)<ul[^>]+class[=\"\'\\s]+lists3[\"\']?[^>]*>(?:(?!<\\/ul>)[\\s\\S])+<\\/ul>");
Regex r2 = new Regex("(?i)<li[^>]*>(?:(?!<\\/li>)[\\s\\S])+<\\/li>");
Regex r3 = new Regex("(?i)<a[^>]+href[=\"\'\\s]+([^\"\'>]*)[\"\']?[^>]*>");
Regex[] rs = {r1,r2,r3};
ABC(str, rs, 0);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询