匹配html闭合标签

<(?<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>

相关文章
相关标签/搜索