asp.net正则匹配嵌套Html标签
废话不多说,直接代码
1、要匹配的html代码
<div class="conItem" id="footer"> <a id="gotop" href="#" onclick="MGJS.goTop();return false;">Top</a> <a id="powered" href="http://wordxxx.org/">WordPress1</a> <div id="copyright"> Copyright © 2001 简单生活</div> <div id="themeinfo"> Theme by <a href="http://www.xxx.com/">mg12</a>. Valid <a href="http://xxx.xxxxxx.org/check?uri=referer">XHTML 1.1</a> and <a href="http://xxx.xxx.org/css-validator/">CSS 3</a>. <div> <div><span>111111</span></div> </div> </div> </div> <div>123</div> <div class="conItem" id="footer"> <a id="gotop" href="#" onclick="MGJS.goTop();return false;">Top</a> <a id="powered" href="http://xxx.org/">WordPress2</a> <div id="copyright"> Copyright © 2002 简单生活</div> <div id="themeinfo"> Theme by <a href="http://www.xxxxx.com/">mg12</a>. Valid <a href="http://xxxx.xxxxx.org/check?uri=referer">XHTML 1.1</a> and <a href="http://xxxx.wwwwww.org/css-validator/">CSS 3</a>. <div> <div><span>222222</span></div> </div> </div> </div> <div>456</div> <div class="conItem" id="footer"> <a id="gotop" href="#" onclick="MGJS.goTop();return false;">Top</a> <a id="powered" href="http://xxxxx.org/">WordPress3</a> <div id="copyright"> Copyright © 2003 简单生活</div> <div id="themeinfo"> Theme by <a href="http://www.xxxxxx4.com/">mg12</a>. Valid <a href="http://xxx.wwwww3.org/check?uri=referer">XHTML 1.1</a> and <a href="http://wwwwwx.wwww3.org/css-validator/">CSS 3</a>. </div> </div>
2、正则代码
可以根据id匹配,也可以根据class匹配
string html = “html代码”; //Regex reg = new Regex(@"<(?<HtmlTag>[\w]+)[^>]*\sclass=(?<Quote>[""']?)conItem(?(Quote)\k<Quote>)[""']?[^>]*>((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*</\k<HtmlTag>>", RegexOptions.IgnoreCase | RegexOptions.Singleline); Regex reg = new Regex(@"<(?<HtmlTag>[\w]+)[^>]*\s[iI][dD]=(?<Quote>[""']?)footer(?(Quote)\k<Quote>)[""']?[^>]*>(((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*)</\k<HtmlTag>>", RegexOptions.IgnoreCase | RegexOptions.Singleline); MatchCollection mc = reg.Matches(html); if (mc.Count > 0) { Response.Write(mc.Count.ToString()); foreach (Match m in mc) { string strItem = m.Value; Response.Write(strItem + "<br><br><br>\r\n-------------------------\r\n"); } }
代码收集于网络,亲测有效!
//成功一定有方法,失败一定有原因。