3

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

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

User1
User2

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

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

User1
User2
User3

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

User1

我已经尝试过环视断言,但它们实际上并没有在尝试匹配时消耗这些字母,所以使用类似 的字符串"User1\r\nUser2",我会得到类似"ser1\r\n". 我想知道除了我认为允许的词之外是否还有其他词。

我不能使用编程语言来做到这一点;我只被允许将正则表达式交给程序。语言将是 Perl。

4

3 回答 3

5

/\b((?!(User1\b|User2\b)).+?)\b/你想要的吗?

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

?!表示否定的前瞻断言(也是零宽度)。

.+?被用来捕获任何与排除的单词不匹配的东西。

希望这可以帮助。

于 2013-01-30T16:19:52.227 回答
2
\b(?!(User1|User2))\w+\b

这应该匹配“|”中未列出的任何单词 分隔列表

于 2013-01-30T16:27:58.453 回答
0
/\b(?!User[12]\b)\w+/

a-zA-Z0-9_将匹配除User1and之外的任何单词(包含 的字符串) User2

于 2013-01-30T18:45:14.210 回答