2

match.matches() は false を返します。これは奇妙です。なぜなら、この正規表現を使って文字列を rubular.com にテストすると、2 つの一致が表示されるからです。私は何を間違っていますか?

    Pattern regex = Pattern.compile("FTW(((?!ODP).)+)ODP");
    Matcher match = regex.matcher("ZZZMMMJJJOOFTWZMJZMJODPZZZMMMJJJOOOFTWMZJOMZJOMZJOODPZZZMMMJJJOO");

    if (match.matches()) {
        System.out.println("match found");
    }
    else {
        System.out.println("match not found");
    }
4

2 に答える 2

12

Matcher.matches領域全体がパターンに一致するかどうかを返します。

find代わりに使用してみてください。(確かにあなたの例では、これはうまくいきます。)

于 2009-09-06T15:44:57.067 に答える
9

このMatcher.matches()メソッドは、文字列全体をパターンに一致させようとします。パターンを次のように変更します。

".*FTW(((?!ODP).)+)ODP.*"
于 2009-09-06T15:47:25.390 に答える