我需要修改一个标识符,并且它有一个特定的首字母,以及零个或多个连续字母,我想排除一些保留字。对于该示例,我使用相同的首字母和继续字母:
(?!(abstract|alignof|as|impl|in|let|mut))[a-z][a-z]*
so abstract | alignof | as | impl | in | let | mut |是我不想匹配的词,事实是,由于这个“正则表达式”,我无法匹配单词“ letter”。它只匹配“字母”
我也尝试过:
(?!(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
在先行检查之外检查。由于词的边界和前瞻性断言是zero-length,因此我们可以在它们之间交换它们:
\b(?!(abstract|alignof|as|impl|in|let|mut)\b)[a-z][a-z]*\b
[如果单词包含一个点作为abstract.com,该怎么办?以下不起作用
\b(?!(abstract\.com))\b
应该如何?