0

Matcher.find は、指定されたインデックスから始まる次のサブシーケンスを検索します。これは正規表現に準拠しています。

次の文字シーケンスが準拠していない場合に失敗するようにするにはどうすればよいですか?

元:

    String input = "123456text123";
    Matcher mat1 = Pattern.compile("\\d+").matcher(input);

    mat1.find();
    System.out.println(mat1.group()); //123456
    mat1.find(mat1.end());
    System.out.println(mat1.group()); //123

次のシーケンスが mat1 パターンと一致しないため、2 番目の検索を失敗させる方法があるかどうかを知りたいです。

マッチャーが常に順番に検出されるように、マッチャーを「構成」できるようにしたいと考えています。

それはまったく可能ですか?

4

1 に答える 1

1

mat1.end()前が次と等しいことを確認できますmat1.start()

int lastEnd = -1;
while (mat1.find()) {

    // Was there any junk between last two matches?
    if (mat1.start() != lastEnd+1) {
        System.out.println("Fail.");
        break;
    }

    System.out.println(mat1.group());
    lastEnd = mat1.end();

}
于 2012-05-14T13:07:54.983 に答える