我需要一些“包含”和“不包含”的正则表达式。通常我只会写:
包含 : ((.*WORD_A.*))$ 并且不包含 : (^((?!WORD_A).)*)$
如果单独使用,这很好用,但我想写一些可以检测到某事的东西。比如“包含单词 A 和单词 B”(顺序不相关!)和“包含单词 A,但不包含单词 B)。
基本上我希望用户可以做出这样的声明“以单词 A 开头,包含单词 B,但不包含 C 和/或以 D 结尾”并且程序返回真/假。最好的办法是附加正则表达式。这可能吗?我想不通。
我需要一些“包含”和“不包含”的正则表达式。通常我只会写:
包含 : ((.*WORD_A.*))$ 并且不包含 : (^((?!WORD_A).)*)$
如果单独使用,这很好用,但我想写一些可以检测到某事的东西。比如“包含单词 A 和单词 B”(顺序不相关!)和“包含单词 A,但不包含单词 B)。
基本上我希望用户可以做出这样的声明“以单词 A 开头,包含单词 B,但不包含 C 和/或以 D 结尾”并且程序返回真/假。最好的办法是附加正则表达式。这可能吗?我想不通。
对于你的例子,我会使用这样的前瞻断言:
^WORD_A(?=.*WORD_B)(?!.*WORD_C).*WORD_D$
如果需要,您可以随时添加更多条件(只需添加另一个前瞻)。例如,如果要匹配任何包含 WORD_A 和 WORD_B 且不包含 WORD_C 和 WORD_D 的字符串:
^(?=.*WORD_A)(?=.*WORD_B)(?!.*WORD_C)(?!.*WORD_D)