2011-10-05 72 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/