試合はfalseを返しながら、なぜlookingAtは前後参照のためにtrueを返しありません

Subbuラクシュミ:

私は正規表現で前後参照の使用を開始しています

私は正規表現をuに続くAQのための肯定先読みであると考えました。しかし、時に入力された文字列は、それがマッチしたイマイチ「ク」です。しかし、私はlookingAt機能のための真の結果を取得します。

String regex="q(?=u)";
Pattern p= Pattern.compile(regex);
String test = "qu";
Matcher m= p.matcher(test);
System.out.println(m.matches());
System.out.println(m.lookingAt());

これがなぜ起こるか誰も説明できますか?

munHunger:

それは文字列全体にマッチしようとしているので、私はそれがあることを前提としてい

マッチ()

領域全体をこのパターンと一致させようとします。

そしてpossitive先読みして、私はそれが一致することはないと思いますuつまり試合になりますq 場合は、それが続いていますuこうしてq全体のテスト文字列ではなく、それが文字列全体に一致されていません。

これは、あなたが得るために、これを書くことができる理由です true

    String regex="^q(?=u)u";
    Pattern p= Pattern.compile(regex);
    String test = "qu";
    Matcher m= p.matcher(test);
    System.out.println(m.matches());
    System.out.println(m.lookingAt());

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=231010&siteId=1