我需要一些“包含”和“不包含”的正则表达式。 通常我会写:
包含:((。* WORD_A。*))$ 和 不包含:(^((?!WORD_A)。)*)$
如果单独使用,这可以正常工作,但我想写一些可以检测到的东西。喜欢 “包含单词A和单词B”(顺序不相关!) 和 “包含单词A,但不包含单词B。”
基本上我希望用户可以这样做一个语句“以单词A开头,包含单词B,但不包含C和/或以D结尾”,程序返回true / false。 最好的方法就是附加正则表达式。 这可能吗?我无法理解。
答案 0 :(得分:4)
对于您的示例,我会像这样使用lookahead assertions:
^WORD_A(?=.*WORD_B)(?!.*WORD_C).*WORD_D$
如果需要,您可以随时添加更多条件(只需添加另一个前瞻)。例如,如果要匹配包含WORD_A和WORD_B且不包含WORD_C和WORD_D的任何字符串:
^(?=.*WORD_A)(?=.*WORD_B)(?!.*WORD_C)(?!.*WORD_D)