匹配除列出的每个单词

kan*_*n19 3 regex perl cpu-word match

我的问题是,如果一个字符串包含除了我列出的单词之外的任何单词,我需要匹配.

例如,我可能有这个批准的列表:

User1
User2
Run Code Online (Sandbox Code Playgroud)

以下是两个应该匹配和不应该匹配的示例.

应该匹配(因为User3未获批准):

User1
User2
User3
Run Code Online (Sandbox Code Playgroud)

不匹配(因为列出的每个字符串都在批准的列表中):

User1
Run Code Online (Sandbox Code Playgroud)

我已经尝试了外观断言,但是他们实际上并没有在尝试匹配时使用字母,因此对于像"User1\r\nUser2"我这样的字符串,我会得到类似的匹配"ser1\r\n".除了我认为允许之外,我想知道是否还有其他任何词语.

我不能用编程语言来做这件事; 我只被允许将正则表达式交给程序.语言将是Perl.

Agi*_*Die 5

请问/\b((?!(User1\b|User2\b)).+?)\b/你在找什么?

\b 表示单词中断,即单词和非单词字符(零宽度)之间的间隙.

?! 表示负前瞻断言(也是零宽度).

.+? 用于捕捉与排除的单词不匹配的任何内容.

希望这可以帮助.

  • 如果我们想要捕获坏词,`\ w +`或`.+?`将比`.+`更好,它会抓到字符串的末尾.如果我们只想要布尔值匹配测试,我认为只需要`/\b(?!(User1 | User2)\ b)\ S /`就可以了. (2认同)