通过正则表达式使用“包含检查”

时间:2012-09-04 19:41:25

标签: java 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

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

2 个答案:

答案 0 :(得分:2)

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

除非我弄错,否则正是你要找的。

答案 1 :(得分:0)

难道你不能只匹配关键字并否定匹配? 如:

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

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

否则我会看一下前瞻/后视操作员......