我想在<p>
和之间捕获最多四组文本</p>
。我可以使用以下正则表达式来做到这一点:
<h5>Trivia<\/h5><p>(.*)<\/p><p>(.*)<\/p><p>(.*)<\/p><p>(.*)<\/p>
要匹配的文本:
<h5>Trivia</h5><p>Was discovered by a freelance photographer while sunbathing on Bournemouth Beach in August 2003.</p><p>Supports Southampton FC.</p><p>She has 11 GCSEs and 2 'A' Levels.</p><p>Listens to soul, R&B, <a href="/name/nm0005567/">Stevie Wonder</a>, <a href="/name/nm0291349/">Aretha Franklin</a>, <a href="/name/nm0713378/">Usher Raymond</a>, <a href="/name/nm0001391/">Michael Jackson</a> and <a href="/name/nm0584117/">George Michael</a>.</p>
它输出四行文本。如果有更多琐事项目或 <p>
事件,它也可以按预期工作。
但如果琐事项目或组少于 4 个<p>
,则它不会输出任何内容,因为它找不到第四组。如何使该组可选?
我试过了:<h5>Trivia<\/h5><p>(.*?)<\/p>(?:<p>(.*?)<\/p>)?(?:<p>(.*?)<\/p>)?(?:<p>(.*?)<\/p>)?(?:<p>(.*?)<\/p>)?
根据http://gskinner.com/RegExr/可以工作,但如果我把它放在 PHP 代码中它就行不通。它只检测一个组并将所有内容放入其中。