老调重弹,求一正则!
<ul class="vv41Table"> <li class='vv4TableDIV1' > <span class="vv41A"><a href="../ddddd/sss" target="_blank">********</a></span></li> <li class='vv4TableDIV1' > <span class="vv41A"><a href="../ddddd/sss" target="_blank">********</a></span></li> <li class='vv4TableDIV1' > <span class="vv41A"><a href="../ddddd/sss" target="_blank">********</a></span></li> <li class='vv4TableDIV1' > <span class="vv41A"><a href="../ddddd/sss" target="_blank">********</a></span></li> </ul>
string s = File.ReadAllText(Server.MapPath("~/test.txt")); MatchCollection matches=Regex.Matches(s, @"(?is)(?<=<ul[^>]+class=""vv41Table""[^>]*>.*?)<a[^>]+>.*?</a>(?=.*?</ul>)"); foreach (Match match in matches) Response.Write(Server.HtmlEncode(match.Value) + "<br/>");
[解决办法]
<ul class="vv41Table">
<li class='vv4TableDIV1' >
<span class="vv41A"><a href="../ddddd/sss" target="_blank">********</a></span></li>
<li class='vv4TableDIV1' >
<span class="vv41A"><a href="../ddddd/sss" target="_blank">********</a></span></li>
<li class='vv4TableDIV1' >
<span class="vv41A"><a href="../ddddd/sss" target="_blank">********</a></span></li>
<li class='vv4TableDIV1' >
<span class="vv41A"><a href="../ddddd/sss" target="_blank">********</a></span></li>
</ul>
<ul class="vv41Table1">
<li class='vv4TableDIV1' >
<span class="vv41A"><a href="../ddddd/sss" target="_blank">********</a></span></li>
<li class='vv4TableDIV1' >
<span class="vv41A"><a href="../ddddd/sss" target="_blank">********</a></span></li>
<li class='vv4TableDIV1' >
<span class="vv41A"><a href="../ddddd/sss" target="_blank">********</a></span></li>
<li class='vv4TableDIV1' >
<span class="vv41A"><a href="../ddddd/sss" target="_blank">********</a></span></li>
</ul>
------------------------------------
这样结果不正确
------解决方案--------------------
嗯,可以这样:
string s = File.ReadAllText(Server.MapPath("~/test.txt")); MatchCollection uls = Regex.Matches(s, @"(?is)<ul[^>]+class=""vv41Table""[^>]*>.*?</ul>"); List<string> results = new List<string>(); foreach (Match ul in uls) { MatchCollection anchors = Regex.Matches(ul.Value, @"(?is)<a[^>]+>.*?</a>"); foreach (Match anchor in anchors) results.Add(anchor.Value); } foreach (string result in results) Response.Write(Server.HtmlEncode(result) + "<br/>");
[解决办法]
也可以用Dom方式获取,要简单得多:
HtmlDocument htmlDoc = new HtmlDocument(); htmlDoc.Load(Server.MapPath("~/test.txt")); HtmlNodeCollection anchors=htmlDoc.DocumentNode.SelectNodes(@"//ul[@class='vv41Table']//a"); foreach (HtmlNode anchor in anchors) Response.Write(Server.HtmlEncode(anchor.OuterHtml) + "<br/>");
[解决办法]
高手啊 学习
[解决办法]
我也是来学习的
[解决办法]
string str = File.ReadAllText(@"E:\1.txt"); Regex reg = new Regex(@"(?is)(?<=<ul[^>]+?class=""vv41Table""[^>]*?>(?:(?!</?ul).)*)<a[^>]+>.*?</a>"); foreach (Match m in reg.Matches(str)) Console.WriteLine(m.Value);
[解决办法]
void Main(){ string str = @"<ul class=""vv41Table""> <li class='vv4TableDIV1' > <span class=""vv41A""><a href=""../ddddd/sss"" target=""_blank"">********</a></span></li> <li class='vv4TableDIV1' > <span class=""vv41A""><a href=""../ddddd/sss"" target=""_blank"">********</a></span></li> <li class='vv4TableDIV1' > <span class=""vv41A""><a href=""../ddddd/sss"" target=""_blank"">********</a></span></li> <li class='vv4TableDIV1' > <span class=""vv41A""><a href=""../ddddd/sss"" target=""_blank"">********</a></span></li> </ul> <ul class=""vv41Table1""> <li class='vv4TableDIV1' > <span class=""vv41A""><a href=""../ddddd/sss"" target=""_blank"">********</a></span></li> <li class='vv4TableDIV1' > <span class=""vv41A""><a href=""../ddddd/sss"" target=""_blank"">********</a></span></li> <li class='vv4TableDIV1' > <span class=""vv41A""><a href=""../ddddd/sss"" target=""_blank"">********</a></span></li> <li class='vv4TableDIV1' > <span class=""vv41A""><a href=""../ddddd/sss"" target=""_blank"">********</a></span></li> </ul>"; foreach(Match m in Regex.Matches(str,@"(?is)<ul class=(['""\s]?)vv41Table\1>.*?((<a[^>]*?>[^<>]+</a>).*?)+</ul>")) { foreach(Capture c in m.Groups[3].Captures) { Console.WriteLine(c.Value); } } /* <a href="../ddddd/sss" target="_blank">********</a> <a href="../ddddd/sss" target="_blank">********</a> <a href="../ddddd/sss" target="_blank">********</a> <a href="../ddddd/sss" target="_blank">********</a> */}
[解决办法]
我也是学习来的
没看懂~~