我的问题是,如果一个字符串包含除了我列出的单词之外的任何单词,我需要匹配。
例如,我可能有这个批准的列表:
User1
User2
以下是两个应该匹配和不应该匹配的示例。
应匹配(因为User3未获批准):
User1
User2
User3
不匹配(因为列出的每个字符串都在批准的列表中):
User1
我尝试了外观断言,但实际上它们并没有在尝试匹配时使用字母,所以使用"User1\r\nUser2"
之类的字符串,我会得到"ser1\r\n"
之类的匹配项。除了我认为允许之外,我想知道是否还有其他任何词语。
我不能用编程语言来做这件事;我只被允许将正则表达式交给程序。语言将是Perl。
答案 0 :(得分:5)
/\b((?!(User1\b|User2\b)).+?)\b/
能做你想要的吗?
\b
表示单词中断,即单词和非单词字符(零宽度)之间的间隙。
?!
表示负前瞻断言(也是零宽度)。
.+?
用于捕捉与排除的单词不匹配的任何内容。
希望这有帮助。
答案 1 :(得分:2)
\b(?!(User1|User2))\w+\b
这应匹配“|”中未列出的任何字词分隔列表
答案 2 :(得分:0)
/\b(?!User[12]\b)\w+/
将匹配a-zA-Z0-9_
和User1
以外的任何字词(包含User2
的字符串)。