Javaの正規表現:Matcher.matchesを(使用して文字列の最後の出現を見つけます。)

ダルシャンメータ:

私は、入力文字列を次のようしています。

abc.def.ghi.jkl.mno

ドット文字の数は、入力が変化してもよいです。私は最後の後の単語を抽出したい.(つまり、mno上記の例では)。私は次のように使用していますregexし、その完全に正常に動作します:

String input = "abc.def.ghi.jkl.mno";
Pattern pattern = Pattern.compile("([^.]+$)");
Matcher matcher = pattern.matcher(input);
if(matcher.find()) {
    System.out.println(matcher.group(1));
}

しかし、私はこのマッチングを行い、サードパーティのライブラリを使用しています(カフカの接続が正確には)、私はちょうどそれに正規表現パターンを提供することができます。問題は、(そのコードが、私は変更することはできません)このライブラリが使用する、あるmatches()代わりのfind()マッチングを行うには、と私は同じコードを実行するときmatches()、それは例えば動作しません。

String input = "abc.def.ghi.jkl.mno";
Pattern pattern = Pattern.compile("([^.]+$)");
Matcher matcher = pattern.matcher(input);
if(matcher.matches()) {
    System.out.println(matcher.group(1));
}

上記のコードは何も印刷されません。あたりとしてのjavadocmatches()文字列全体を一致させようとします。私が使用して同様のロジックを適用することができますどのような方法がありmatches()抽出するために、mno私の入力文字列からは?

Wiktor第Stribiżav:

あなたは使用することができます

".*\\.([^.]*)"

それは一致しました

  • .*\.-最後に可能な最大の数だけ任意の0+文字.のchar
  • ([^.]*) - キャプチャグループ1:ドット以外の任意の0+文字。

参照してください。正規表現のデモとRegulexグラフ:

ここでは、画像の説明を入力します。

おすすめ

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