我想结合两个正则表达式。第一个是负向前瞻:
^(.(?!(test)))*$
它匹配我的不包含“test”的数据。
现在我想将它与基本搜索结合起来:我想找到不包含“test”(字符串1)但包含“fix”(字符串2)的数据。如何将这两者合并为一个正则表达式?
就我的目的而言,只要“测试”没有出现并且出现“修复”,这些字符串出现的位置并不重要。
答案 0 :(得分:3)
^(?!.*test)(?=.*fix)(.*)$
是一个通用的解决方案。因为正则表达式已被解析所以正则表达式游标不会移动,所以看起来的顺序并不重要。
我唯一想说的就是这个,我就是这样做的,因为那就是你的正则表达式是什么,如果有像fixed
或tested
这样的词,那些就会被抓住通过展望未来。你可以通过添加单词边界来改变它
^(?!.*\btest\b)(?=.*\bfix\b)(.*)$
编辑:如果要匹配多行,请取出/ m并替换为/ s或更改.
令牌
^(?![\s\S]*test)(?=[\s\S]*fix)([\s\S]*)$
答案 1 :(得分:0)
这些方法中的任何一种都可行:
输入1
# ^(?!.*test)(?=.*fix).*$
^
(?! .* test )
(?= .* fix )
.*
$
类型2
# ^(?:(?!test).)*fix(?:(?!test).)*$
^
(?:
(?! test )
.
)*
fix
(?:
(?! test )
.
)*
$