我有這樣的字符串。正則表達式選擇
<p class='link'>try</p>bla bla</p>
我想只有<p class='link'>try</p>
我已經試過這一點。
/<p class='link'>[^<\/p>]+<\/p>/
但它不起作用。
我該如何做到這一點? 謝謝,
我有這樣的字符串。正則表達式選擇
<p class='link'>try</p>bla bla</p>
我想只有<p class='link'>try</p>
我已經試過這一點。
/<p class='link'>[^<\/p>]+<\/p>/
但它不起作用。
我該如何做到這一點? 謝謝,
如果這是你的字符串,你想那些p
標籤之間的文本,那麼這應該工作...
/<p\sclass='link'>(.*?)<\/p>/
原因你不工作是因爲你要添加<\/p>
到你不是人物範圍。它不是字面上的匹配,而是單獨檢查每個字符。
當然,它是強制性我提到有用來解析HTML片段更好的工具(如HTML解析器。)
'/<p[^>]+>([^<]+)<\/p>/'
將讓你「試穿」
它看起來像你使用此塊:[^<\/p>]+
打算匹配除</p>
以外的任何內容。不幸的是,這不是它所做的。 A []
塊可以匹配裏面的任何字符。在你的情況下,/<p class='link'>[^<\/p>]+
部分匹配<p class='link'>try</
,但它並沒有緊跟着預期的</p>
,所以沒有匹配。
亞歷克斯的解決方案,使用非貪婪限定符是我傾向於解決這類問題。
我試圖讓一個不太特定於任何特定的標籤。
(<[^/]+?\s+[^>]*>[^>]*>)
這將返回:
<p class='link'>try</p>
正則表達式和HTML? http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – 2011-01-31 21:57:56
雖然你當然*可以* [用正則表達式解析HTML](http://stackoverflow.com/questions/4284176/question-in-parsing-data-in-perl-where-am-i-going-wrong/4286326#4286326),如果它是通用HTML,你可能不想要。雖然「俘虜」HTML是好的;只是在它的「狂野」狀態中非常謹慎。 – tchrist 2011-02-01 01:02:47