我需要修改一个标识符,它有一个特定的第一个字母,以及零个或多个连续字母,我想排除一些保留字。 对于示例,我使用相同的第一个和继续字母:
(?!(abstract|alignof|as|impl|in|let|mut))[a-z][a-z]*
所以抽象| alignof | as | impl | in | let | mut是我不想匹配的词,事实是,这个正则表达式我不能匹配单词" letter"因为"让"。它只匹配" etter"
我也试过这个:
(?!(abstract|alignof|as|impl|in|let|mut))\b[a-z][a-z]*\b
但它似乎不起作用。 如何排除确切的单词?
由于
答案 0 :(得分: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