我正在尝试在php(preg_match_all
)中运行一个匹配字符串中某些完整单词的正则表达式,但问题是它还匹配仅包含部分测试单词的单词。
这也是一个更大的正则表达式中的子查询,所以其他PHP函数如strpos
对我来说无济于事。
字符串:"I test a string"
要匹配的字词:"testable", "string"
尝试正则表达式:/([testable|string]+)/
预期结果:仅限"string"
!
结果:"test", "a", "string"
答案 0 :(得分:9)
如果你真的想确保你只收到你的单词而不是包含它们的单词,那么你可以使用单词边界锚点:
/\b(testable|string)\b/
这只匹配单词边界,后跟testable
或string
,然后是另一个单词边界。
答案 1 :(得分:2)
你不想要一个[]
的角色类,你只想匹配单词:
/testable|string/