正则表达式:查找字符串中的最后一次出现,前面是另一个字符串

时间:2015-10-14 18:52:30

标签: php regex preg-match

我有一个非常庞大的字符串(一大块html),其中我想根据这种情况找到一个块:

<h2>Some text here</h2>
<p>Lorem ipsum... Lorem ipsum... String1... Lorem ipsum...</p>
<p>More Lorem ipsum... More Lorem ipsum...</p>

<h2>Some more text here</h2>
<p>Lorem ipsum... Lorem ipsum... String2... Lorem ipsum...</p>
<p>More Lorem ipsum... More Lorem ipsum...</p>

<h2>Another chunk here, same string</h2>
<p>Lorem ipsum... Lorem ipsum... String2... Lorem ipsum...</p>
<p>More Lorem ipsum... More Lorem ipsum...</p>

<h2>And even more text here</h2>
<p>Lorem ipsum... Lorem ipsum... String3... Lorem ipsum...</p>
<p>More Lorem ipsum... More Lorem ipsum...</p>

我想找到最后一个块,从h2开始到下一个h2之前结束,其中包括&#34; String2&#34;,在上面的示例中将是

<h2>Another chunk here, same string</h2>
<p>Lorem ipsum... Lorem ipsum... String2... Lorem ipsum...</p>
<p>More Lorem ipsum... More Lorem ipsum...</p>

有人可以帮我这个吗?我使用PHP的RegEx风格。

后我卡住了
<h2(.*+)String2<h2/im

并且无法理解如何找到最后一个。

谢谢!

1 个答案:

答案 0 :(得分:2)

你可以使用这样的方法:

<h2>(?:[^\0](?!<h2>))*?String2[^\0]*?(?=<h2>)

Regex live here.