正则表达式以匹配某些单词(不包括带点的字符串)

时间:2018-10-30 21:07:00

标签: ruby regex

"Colorado""Co""CO"匹配的正则表达式是什么,不包括诸如"Co.""co."这样的句点的字符串?

此:

/\b(Colorado|Co|CO)\b/i

匹配"CO"的两个实例。如何排除包含点的匹配项?

此:

\b(?:(?!Co\.)\w)+\b

忽略"Co.",但我不知道如何将其与允许的关键字结合使用。

1 个答案:

答案 0 :(得分:1)

您可以在Co之后添加负前瞻:

/\b(Colorado|Co(?!\.))\b/i
               ^^^^^^

请参见Rubular demo

请注意,我省略了co替代项,因为您使用的是不区分大小写的i修饰符,该修饰符使Co等于co

另一种方法是在第一个\b之后的组之前添加否定前瞻:

/\b(?!Co\.)(Colorado|Co)\b/i
   ^^^^^^^^ 

请参见another Rubular demo

在这里,\b声明单词边界处的位置,然后如果(?!Co\.)是当前位置右侧的文本,并且{{1} }与整个单词Co.(Colorado|Co)\b匹配。

请注意,如果您手动编写图案,则可以进一步缩短图案,例如

Colorado