2011-10-05 101 views
5

我試圖運行在PHP(preg_match_all)一個正則表達式在一個字符串匹配某種完整的單詞,但問題是,它也符合僅包含一個測試單詞的一部分的話。 同樣這是一個較大的正則表達式的子查詢,所以像strpos其他PHP函數不會幫我,可悲。PCRE匹配整個單詞串

字符串"I test a string"

詞匹配"testable", "string"

嘗試正則表達式/([testable|string]+)/

預期結果"string"而已!

結果"test", "a", "string"

+3

你的正則表達式是完全等同於'/([abegilnrst |] +)/' – NullUserException

+0

感謝,我現在解決了......但你爲什麼要刪除嗎?答案:d – Inoryy

回答

8

如果你真的想確保你只讓你的話,不包含這些的話,那麼你可以使用單詞邊界錨:

/\b(testable|string)\b/ 

這將只匹配字邊界,接着爲無論testablestring然後另一個字邊界。

2

你不想要的字符類[],你只是想匹配的話:

/testable|string/