2012-05-19 77 views
0

某些部分我需要使用正則表達式的字符串找到匹配的結果。 我需要找到,但想在那裏說(*),以不顧一切現在(+?):正則表達式忽略字符串

$regex='#<span class="(*)"><a href="/venues/(*)">(.+?)</a></span>#'; 

不是忽略(*)的,它呼應了什麼是(*)。

我怎麼能忽略這些,只得到(。+?)?

謝謝!

丹尼斯

發現的解決方案

不理,你必須使用。*?

+0

請不要使用RegEx解析HTML,因爲它會[驅動你瘋狂](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/ 1732454#1732454)。改爲使用[HTML解析器](http://stackoverflow.com/questions/292926/robust-mature-html-parser-for-php)。 –

回答

0

的parenthesizes意味着捕獲:什麼是那些()內將抓獲這樣你就可以在以後使用它。

如果你不想要的東西是捕獲,因爲你不希望/確需以後使用它,只是刪除parenthesizes。

我應該補充說,使用正則表達式從HTML中提取數據通常不是一個好主意......您可能想使用DOM解析器,例如使用DOMDocument::loadHTML()

+0

謝謝 - 關鍵是在class =「」裏面會有東西,例如class =「example」,我需要告訴正則表達式它應該忽略引號內的內容,在這個例子中 - 任何想法如何做到這一點? – weltschmerz

+0

你可以使用類似'。*?'的東西,而不必捕捉它匹配的內容;-) –

+0

太棒了,謝謝!這工作。我將添加解決問題的辦法。 – weltschmerz