2011-05-27 96 views
0

我是RegEx的新手,一直無法弄清楚可能是一個簡單問題。我需要匹配HTML塊中特定單詞的列表。正則表達式針對HTML中的特定單詞

例如,我有一個單詞列表:

  • ASDF
  • ZXCV
  • QWER

而下面的HTML:

<p>ASDF jumped over the ZXCV of QWER.</p>

我我正在使用與RegEx數組匹配的preg_replace_callback(),例如/\bASDF\b/,但那隻會找到ASDF,它們被空格包圍,並且不會考慮符號,例如標記或標點的開始/結束。

我一直盯着RegEx牀單幾個小時,而我一直在這一個。任何建議,你可以給我開始將不勝感激。感謝您的時間。

回答

1
\bASDF\b 

將匹配

<p>ASDF</p> 
<p>foo ASDF bar</p> 
<p>&nbsp;ASDF&gt;</p> 
<p>foo ASDF.</p> 

你有什麼麻煩不匹配?

+0

啊哈!謝謝你的幫助塞思。我一直在抨擊這個問題,事實證明問題不在於RegEx部分!我將結束這個問題,因爲我真正的問題完全沒有解決,但非常感謝你的幫助! – Brad 2011-05-27 01:22:26

+0

計劃,但除非我再等幾分鐘,否則不會讓我。 – Brad 2011-05-27 01:31:13

1

您想將HTML標籤排除在等式之外,只能與文本節點一起使用。

因此,剝離HTML或使用類似DOMDocument的內容來解析元素,然後在文本節點上使用正則表達式。

另外,\b應該考慮>的邊界,因爲它不是一個單詞字符。

+0

這不適合我的情況,因爲我需要將結果返回到HTML。否則,我會按照你的建議去做。我正在動態地添加一些特定單詞的鏈接。 – Brad 2011-05-27 01:30:19

+0

@Brad DOM解析器可以重新創建您的HTML罰款:) – alex 2011-05-27 01:31:58

+0

雖然通常我同意你(並且絕不會嘗試用RegEx解析HTML),但我認爲這對於這個應用程序來說有點矯枉過正。但是,我會把這個想法留在我的後兜裏。謝謝。 – Brad 2011-05-27 01:37:15

1

你想匹配任何這些單詞或全部嗎?如果有的話,你可以做(​​ASDF | ZXCV | QWER)。如果是這些話,匹配所有單詞的標準是什麼?

查看此資源http://www.regular-expressions.info我強烈建議您拿起本書的副本,Mastering Regular Expressions,Jeffrey Friedl,http://regex.info

+0

這非常有幫助,謝謝! – Brad 2011-05-27 01:30:38