我想要捕獲最多四組<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代碼。它只檢測一個組並將所有內容放入其中。
您使用哪個分隔符?因爲你沒有在最後一個正則表達式中轉義'/'es。沒有明顯的原因,爲什麼選擇性方法不適用。 - 另外,儘管我並沒有試圖譏諷陳舊的模因,但在HTML/DOM遍歷方面,這可能比正則表達式更簡單(儘管對於這種情況足夠了,並且您的輸入是中等連貫的)。但爲簡單起見,請參閱phpQuery或QueryPath,如果空閒時間過長,請參閱原始DOM方法。 – mario 2013-04-30 22:57:58
我錯誤地排除了最後一個正則表達式中的/(對實際嘗試的正則表達式進行採樣)。爲了清晰起見編輯了這些內容。感謝您的建議。 – zataived 2013-05-01 00:36:36