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 に答える