【发布时间】:2019-04-04 00:05:05
【问题描述】:
匹配"Colorado"、"Co" 或"CO" 的正则表达式是什么,不包括包含句点的字符串,例如"Co." 或"co."?
这个:
/\b(Colorado|Co|CO)\b/i
匹配"CO" 的两个实例。如何排除包含点的匹配项?
这个:
\b(?:(?!Co\.)\w)+\b
忽略"Co.",但我不知道如何将其与允许的关键字结合起来。
【问题讨论】:
匹配"Colorado"、"Co" 或"CO" 的正则表达式是什么,不包括包含句点的字符串,例如"Co." 或"co."?
这个:
/\b(Colorado|Co|CO)\b/i
匹配"CO" 的两个实例。如何排除包含点的匹配项?
这个:
\b(?:(?!Co\.)\w)+\b
忽略"Co.",但我不知道如何将其与允许的关键字结合起来。
【问题讨论】:
您可以在Co 之后添加一个否定的前瞻:
/\b(Colorado|Co(?!\.))\b/i
^^^^^^
请注意,我省略了 co 替代选项,因为您使用了不区分大小写的 i 修饰符,它使 Co 等于 co。
另一种方法是在第一个\b之后的组之前添加负前瞻:
/\b(?!Co\.)(Colorado|Co)\b/i
^^^^^^^^
这里,\b 断言单词边界处的位置,然后如果 Co. 是当前位置右侧的文本,(?!Co\.) 匹配失败,(Colorado|Co)\b 匹配整个单词 Colorado或Co。
请注意,如果您手动编写模式,可能会进一步缩短模式,例如
/\b(?!Co\.)Co(?:lorado)?\b/i
【讨论】: