通过正则表达式使用'contains check'



我想要一些正则表达式的帮助。基本上,我在寻找一个能匹配任何东西的东西,但不能包含关键词。

Regex应该匹配任何不包含"bar"的内容

    String i1 = "foo";
    String i2 = "foo bar";
    String i3 = "bar foo";
    Pattern p = Pattern.compile(".*\(!(bar)\).*");
    Matcher matcher = p.matcher(i1);
    System.out.println(matcher.matches()); // false, should be true
    matcher = p.matcher(i2);
    System.out.println(matcher.matches()); // false
    matcher = p.matcher(i3);
    System.out.println(matcher.matches()); // false

如何更改regex以正确地进行包含检查?

^(?:(?!bar).)*$

这正是你想要的,除非我弄错了。

你不能只匹配你的关键字并否定匹配吗?如:

String i1 = "foo";
Pattern p = Pattern.compile(".*\((bar)\).*");
Matcher matcher = p.matcher(i1);
System.out.println(!matcher.matches());

否则,我会查看先行/后向运算符。。。

最新更新