【问题标题】:PCRE matching whole words in a stringPCRE 匹配字符串中的整个单词
【发布时间】:2011-10-05 14:09:31
【问题描述】:

我正在尝试在 php (preg_match_all) 中运行匹配字符串中某些完整单词的正则表达式,但问题是它也匹配仅包含部分测试单词的单词。 这也是一个更大的正则表达式中的子查询,所以像strpos这样的其他PHP函数对我没有帮助,很遗憾。

字符串"I test a string"

要匹配的单词"testable", "string"

尝试过的正则表达式/([testable|string]+)/

预期结果:仅限"string"

结果"test", "a", "string"

【问题讨论】:

  • 你的正则表达式完全等同于/([abegilnrst|]+)/
  • 谢谢,我现在解决了...但是你为什么删除你的答案?:D

标签: php pcre


【解决方案1】:

如果你真的想确保只得到你的单词而不是包含它们的单词,那么你可以使用单词边界锚:

/\b(testable|string)\b/

这将只匹配一个单词边界,后跟testablestring,然后是另一个单词边界。

【讨论】:

    【解决方案2】:

    您不想要带有[] 的字符类,您只想匹配单词:

    /testable|string/

    【讨论】:

      最近更新 更多