0

我想要一些关于正则表达式的帮助。基本上,我正在寻找可以匹配任何内容但包含关键字的内容。

正则表达式应匹配不包含“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

如何更改正则表达式以正确执行包含检查?

4

2 回答 2

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

除非我弄错了,否则正是您要找的东西。

于 2012-09-04T19:52:12.403 回答
0

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

String i1 = "foo";
Pattern p = Pattern.compile(".*\\((bar)\\).*");

Matcher matcher = p.matcher(i1);
System.out.println(!matcher.matches());

否则我会看看前瞻/后视运算符......

于 2012-09-04T19:47:55.640 回答