【问题标题】:regex negative lookahead - exclude the exact word正则表达式否定前瞻 - 排除确切的词
【发布时间】:2015-11-03 08:54:21
【问题描述】:

我需要修改一个标识符,它有一定的首字母,还有零个或多个连续字母,我想排除一些保留字。 对于示例,我使用相同的首字母并继续字母:

(?!(abstract|alignof|as|impl|in|let|mut))[a-z][a-z]*

所以 abstract|alignof|as|impl|in|let|mut 是我不想匹配的单词,问题是,使用这个正则表达式我无法匹配单词“letter”,因为“let”。它只匹配“etter”

我也试过这个:

(?!(abstract|alignof|as|impl|in|let|mut))\b[a-z][a-z]*\b

但它似乎不起作用。 如何排除确切的单词?

谢谢

【问题讨论】:

  • 添加\b 也用于前瞻中的单词。 (?!\b(abstract|alignof|as|impl|in|let|mut)\b)
  • @nhahtdh:请发表你的答案。

标签: regex negative-lookahead


【解决方案1】:

您还需要为前瞻中的单词添加单词边界检查:

(?!\b(abstract|alignof|as|impl|in|let|mut)\b)\b[a-z][a-z]*\b

从技术上讲,第一个\b 是多余的,因为\b 在前瞻之外被检查。由于字边界和前瞻断言是零长度,我们可以交换它们:

\b(?!(abstract|alignof|as|impl|in|let|mut)\b)[a-z][a-z]*\b

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多