PHP preg匹配错误捕获

时间:2014-07-28 12:40:52

标签: php

我想捕获<div class='troll'><goodTag/>trololoQWE</div>(1)

<div class='troll'>trololo123</div>(2)

<div class='troll'>besttrololo123</div>(3)

但忽略<div class='troll'><badTag/>trololoASD</div>(4)

我试过这个正则表达式:/<div class='troll'>([^(<badTag\/>)].*?)<\/div>/

然后我只能抓住(2):(

如何正确忽略捕获组第一个位置的长文本?

编辑:我想要捕获此div的所有内容,但忽略第一项是<badTag>

2 个答案:

答案 0 :(得分:1)

您应该使用以下正则表达式:

/(<div class='troll'>(?!<badTag\/>).*<\/div>)/

Demo

答案 1 :(得分:0)

试试这个:

/<div class='troll'>((?!<badTag\/>).*)<\/div>/

在这里测试:

http://www.phpliveregex.com/p/69Y