2

我需要一些“包含”和“不包含”的正则表达式。通常我只会写:

包含 : ((.*WORD_A.*))$ 并且不包含 : (^((?!WORD_A).)*)$

如果单独使用,这很好用,但我想写一些可以检测到某事的东西。比如“包含单词 A 和单词 B”(顺序不相关!)和“包含单词 A,但不包含单词 B)。

基本上我希望用户可以做出这样的声明“以单词 A 开头,包含单词 B,但不包含 C 和/或以 D 结尾”并且程序返回真/假。最好的办法是附加正则表达式。这可能吗?我想不通。

4

1 回答 1

4

对于你的例子,我会使用这样的前瞻断言

^WORD_A(?=.*WORD_B)(?!.*WORD_C).*WORD_D$

如果需要,您可以随时添加更多条件(只需添加另一个前瞻)。例如,如果要匹配任何包含 WORD_A 和 WORD_B 且不包含 WORD_C 和 WORD_D 的字符串:

^(?=.*WORD_A)(?=.*WORD_B)(?!.*WORD_C)(?!.*WORD_D)
于 2013-09-05T13:07:16.123 回答