首页 新闻 会员 周边 捐助

正则匹配最近的HTML标记

0
悬赏园豆:10 [已解决问题] 解决于 2010-10-27 13:38

例如:一个html页面,有<div class="t1">...  <div class="need">..<div>....</div>..</div>......</div>

<br>..

<div class="t1"> ... <div class="need">..<div>....</div>..</div>......</div>

......

中间有n个div ,也有多个class=“need”的div, 我想匹配 class=“need”的那个div.  最近一对的div.

我想要的结果是

<div class="need">..<div>....</div>..</div>

<div class="need">..<div>....</div>..</div>

<div class="need">..<div>....</div>..</div>

ruonanxiao的主页 ruonanxiao | 初学一级 | 园豆:6
提问于:2010-10-27 10:32
< >
分享
最佳答案
0

<div[\s]*?class="need">[\s\S]*?</div>

收获园豆:10
小萱 | 菜鸟二级 |园豆:235 | 2010-10-27 13:37
这种贪婪模式匹配有问题,在处理某些结果会出错,具体看这里。正确答案应该采用平衡组:http://space.cnblogs.com/question/10866/
邀月 | 园豆:25475 (高人七级) | 2010-10-27 13:46
其他回答(1)
0

用平衡组:

(?is)<div\s+class=\"need\"[^>]*>(?><div[^>]*>(?<o>)|</div>(?<-o>)|(?:(?!</?div\b).)*)*(?(o)(?!))</div>

 

邀月 | 园豆:25475 (高人七级) | 2010-10-27 13:43
谢谢你 邀约
支持(0) 反对(0) ruonanxiao | 园豆:6 (初学一级) | 2010-11-11 10:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册