【问题标题】:Regex to match some words excluding strings with a dot正则表达式匹配一些单词,不包括带点的字符串
【发布时间】:2019-04-04 00:05:05
【问题描述】:

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

这个:

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

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

这个:

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

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

【问题讨论】:

    标签: ruby regex


    【解决方案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. 是当前位置右侧的文本,(?!Co\.) 匹配失败,(Colorado|Co)\b 匹配整个单词 ColoradoCo

    请注意,如果您手动编写模式,可能会进一步缩短模式,例如

    /\b(?!Co\.)Co(?:lorado)?\b/i
    

    【讨论】:

    • 感谢您的快速回复!简单而且效果很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多