首页>>图形网页>>正则表达式匹配嵌套div中的标签(正则表达式回溯)
正则表达式匹配嵌套div中的标签(正则表达式回溯)
来源: 易习特达网 时间: 2014-09-06 08:07:03

<div>我是一层</div>
<div>
   <div class="test">
  我是二层div
   <div class="test">我是三层div</div>
  <span>我是span呀</span><ul>我是ul呀</ul>
   </div>
</div>

正则表达式修改为:

<div[^>]*> #开始div标签
[sS]*? #匹配任意字符或者换行符但是尽量少
(
(
(?'Open'<div[^>]*>) #匹配嵌套的div开始标签
[sS]*? #匹配开始div标签后的内容
)+ #匹配至少一个div开始标签,开始标签后面可以不跟任何内容也可以包含其它标签
(
(?'-Open'</div>) #匹配嵌套的div闭合标签
[sS]*? #匹配闭合div标签后的内容
)+ #匹配至少一个div闭合标签,闭合标签后面可以不跟任何内容也可以包含其它标签
)* #开始标签和闭合标签匹配0次或者以上的情况
(?(Open)(?!))#如果堆栈上还有组名为Open的项则匹配失败
</div> #结束div标签

<div[^>]*>[sS]*?(((?'open'<div[^>]*>)[sS]*?)+((?'-open'</div>)[sS]*?)+)*(?(open)(?!))</div>


<div[^>]*>[sS]*?   //开始标签,自不用说
((
 (?'open'<div[^>]*>)[sS]*?)+   //开始标签自定义分组名open,其后是任意div里面任意内容
 ((?'-open'</div>)[sS]*?)+)*   //结束标签定义为分组名-open,然后</div>后面跟着任意内容
 (?(open)(?!)                    //
)
</div>


<div[^>]*class="paragraphContent"[^>]*>[sS]*?(((?<htmltag><div[^>]*)[sS]*?)*((?<-htmltag></div>)[sS]*?)*)*(?(htmltag)(?!))</div>

上一篇:javascript的option用法 下一篇:网页设计中常用的16中颜色及其他安全色