regex负前瞻-排除确切的单词

regex负前瞻-排除确切的单词,regex,negative-lookahead,Regex,Negative Lookahead,我需要修改一个标识符,它有一个特定的首字母,零个或多个连续字母,我想排除一些保留字。 例如,我使用了相同的“第一个字母”和“第二个字母”: (?!(abstract|alignof|as|impl|in|let|mut))[a-z][a-z]* 因此,抽象的“alignof”和“impl”in“let”mut是我不想匹配的单词,问题是,使用这个正则表达式,我无法匹配单词“letter”,因为“let”。它只匹配“etter” 我也试过: (?!(abstract|alignof|as|impl

我需要修改一个标识符,它有一个特定的首字母,零个或多个连续字母,我想排除一些保留字。 例如,我使用了相同的“第一个字母”和“第二个字母”:

(?!(abstract|alignof|as|impl|in|let|mut))[a-z][a-z]*
因此,抽象的“alignof”和“impl”in“let”mut是我不想匹配的单词,问题是,使用这个正则表达式,我无法匹配单词“letter”,因为“let”。它只匹配“etter”

我也试过:

(?!(abstract|alignof|as|impl|in|let|mut))\b[a-z][a-z]*\b
但它似乎不起作用。 我怎样才能排除确切的单词


谢谢

您还需要为“展望”中的单词添加单词边界检查:

(?!\b(abstract|alignof|as|impl|in|let|mut)\b)\b[a-z][a-z]*\b
从技术上讲,第一个
\b
是多余的,因为
\b
是在前瞻之外检查的。由于word boundary和look-ahead断言的长度为零,因此我们可以交换它们:

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

为“向前看”中的单词添加
\b
(?!\b(抽象的对齐方式在let-mut中实现)
@nhahtdh:请发布您的答案。