regex否定前瞻-排除确切字词

问题描述 投票:1回答:1

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

(?!(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

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

谢谢

regex negative-lookahead
1个回答
1
投票

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

(?!\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

0
投票

[如果单词包含一个点作为abstract.com,该怎么办?以下不起作用

\b(?!(abstract\.com))\b

应该如何?

© www.soinside.com 2019 - 2024. All rights reserved.