<(?<HtmlTag>[\w]+)[^>]*?>((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*</\k<HtmlTag>>spa
分解递归
一、<(?<HtmlTag>[\w]+)[^>]*?>test
(?<HtmlTag>[\w]+) 意思是将[\w]+匹配到的结果存入变量HtmlTag中,名字可随意定,后面用到可以使用\k<HtmlTag>,好比匹配div变量
(?<HtmlTag>div) 通常用于不肯定标签名时匹配di
*? - > * 默认是贪婪模式,0次或屡次,也就是尽量多的匹配。*? 就是尽量少匹配标签
二、((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*字符
(?<Nested><\k<HtmlTag>[^>]*>) | </\k<HtmlTag>>(?<-Nested>) | .*?
(?<Nested><\k<HtmlTag>[^>]*>)相似递归,在遇到值为<\k<HtmlTag>[^>]*> +1,
</\k<HtmlTag>>(?<-Nested>) 遇到值为</\k<HtmlTag>> -1
.*? 就是 匹配任意单行字符
| 或
三、</\k<HtmlTag>>
使用前面定义的HtmlTag内容,通常标签都是成对的,好比<div><span>...test<span></div>