asp.net正则匹配嵌套Html标签

时间:2023-01-24 12:54:54

废话不多说,直接代码

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 &copy; 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 &copy; 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 &copy; 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 > )
{
Response.Write(mc.Count.ToString());
foreach (Match m in mc)
{
string strItem = m.Value;
Response.Write(strItem + "<br><br><br>\r\n-------------------------\r\n");
}
}

代码收集于网络,亲测有效!