2013-05-13 58 views
0

我有包含像「DOM」 * 「淨」 *和‘C++’串話的陣列。我試圖通過使用字邊界通配符來爲某些文本中的每個字符串執行整個單詞匹配。如果字被讀入一個變量,它看起來像:定製定義爲開始或非單詞字符結尾的單詞

preg_match("/\b".preg_quote($word)."\b/",...) 

這對於喜歡「DOM」的一個例子能正常工作,但不適合「 NET」或‘C++’,因爲單詞邊界也被視爲在。在.Net的情況下爲,並且在C++的情況下已經在+處看到。在PHP的正則表達式中有沒有另外一種方式將.NetC++作爲單詞邊界的「單詞」?

+0

一個點通常會成爲單詞的結尾。我想你需要在空間上選擇你的話。但想一想,你想驗證** .Net **,但不是其他的點,例如句子的結尾。對我來說,你需要提出soem特定的要求,以匹配什麼和不匹配什麼。 – Aquillo 2013-05-13 06:26:12

回答

2

這不能做,因爲對於非單詞字符(\W\b匹配。

你可以做什麼,而不是爲搜索不匹配的一些字符集的定義是字,字符,如下圖所示:

preg_match("/([^a-zA-Z_.+])".preg_quote($word)."\1/",...); 

編輯:增加了backrefrence,所以你只需要鍵入該序列一次。

+0

+1更好然後我有什麼 – Orangepill 2013-05-13 06:26:30

+0

雖然這裏發生的是一個結束點(一個句子結尾)的單詞將與**點匹配**。我認爲OP需要考慮其含義(儘管如此,這是一個很好的答案!)。 – Aquillo 2013-05-13 06:28:20

0

字符類...比方說,你只希望做空格和逗號,你會做這個

preg_match("/[, ]".preg_quote($word)."[, ]/",...) 
相關問題