匹配HTML元素或没有

时间:2014-04-28 18:47:17

标签: regex preg-match-all

我试图匹配以下内容:

<h4><a href="#"></a>
        Bartal, Association            </h4>
        -->
        <p>Travis House                 
        <p><b>City</b> :
        <em>Austin</em></p>

N.B。该部分&#34;&lt; p&gt; Travis House&#34;有时在那里,有时候没有。

我正在使用以下正则表达式:

~<!--.+?<h4>(.+?)<\/h4>.+?(?:<p>(.+))?.+?<p><b>City<\/b>.+?<em>(.+?)<\/em>~is

它运作正常,但它与Travis House&#39;

的部分不匹配。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

这有效:

~--\s+<h4>(.+?)<\/h4>.+?(?:<p>(.+?)\n)?\s+<p><b>City<\/b>.+?<em>(.+?)<\/em>~is

看起来是if或nothing声明:

(?:<p>(.+))?

没有工作,因为它被两个不合时宜的圆点所包围。