<(?<HtmlTag>[\w]+)[^>]*?>((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*</\k<HtmlTag>>
分解
1、<(?<HtmlTag>[\w]+)[^>]*?>
(?<HtmlTag>[\w]+) 意思是将[\w]+匹配到的结果存入变量HtmlTag中,名字可随意定,后面用到可使用\k<HtmlTag>,比如匹配div
(?<HtmlTag>div) 一般用于不确定标签名时匹配
*? - > * 默认是贪婪模式,0次或多次,也就是尽可能多的匹配。*? 就是尽可能少匹配
2、((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*
(?<Nested><\k<HtmlTag>[^>]*>) | </\k<HtmlTag>>(?<-Nested>) | .*?
(?<Nested><\k<HtmlTag>[^>]*>)类似递归,在遇到值为<\k<HtmlTag>[^>]*> +1,
</\k<HtmlTag>>(?<-Nested>) 遇到值为</\k<HtmlTag>> -1
.*? 就是 匹配任意单行字符
| 或
3、</\k<HtmlTag>>
使用前面定义的HtmlTag内容,一般标签都是成对的,比如<div><span>...test<span></div>
原文地址:https://www.cnblogs.com/toloy/p/8955235.html
时间: 2024-10-29 09:20:38