正则表达式检测特定单词

时间:2018-05-31 12:55:46

标签: regex

如何匹配不属于单词的特定单词?

例如,我希望正则表达式检测三个“on”而不是“long”中的那个。

on long on abc on

当我使用(?: |^)the|on|of(?: |$)时,它会检测到“long”中的“on”,这不是我想要的。

由于

2 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式:

/\bon\b/

\b令牌匹配任何单词边界,它们是空格,字符串开头还是结尾等等......

所以这很直截了当:你需要单词on,并被单词边界包围。

答案 1 :(得分:1)

这里有两件事要提及:

  • 如果要限制一组单词的上下文,请始终将它们分组
  • 要匹配整个单词,您需要使用word boundaries, \b

所以,你需要

\b(?:the|on|of)\b

请参阅this regex demo

enter image description here

您可以在图表上看到,单词边界现在与|运算符列出的所有备选方案相关,因为它们都包含在non-capturing group中。