-1

文字列内の特定のパターンを見つける正規表現を作成しようとしていますが、正しく機能させるのに苦労しています。私のコードは次のようになります。

    public String regexTest(String test) {
    Pattern p = Pattern.compile("A");
    Matcher m = p.matcher(test);

    while (m.find()) {
    return m.group();
    }
    return "";
}

文字列テストには「ABCDAB A」が含まれていますが、「A」、「A」、および「A」を返したいのに、「A」を返すだけです。ここで私が間違っていることを誰かが知っていますか?

4

3 に答える 3

1

マッチャーはカーソルのようなものです。Matcher#find()次の結果に進むには、電話をかける必要があります。

m.find()
m.group() // -> first result
m.find()
m.group() // -> second result
于 2013-11-05T11:49:35.710 に答える
0

あなたは最初の試合の後に戻ってきます(別名、メソッドを終了します)ので、それがあなたの問題だと思います...

return m.group();
于 2013-11-05T11:48:04.377 に答える
0

複数の値を返したい場合、メソッドの戻り値の型を String だけにすることはできません。を使用することをお勧めしList<String>ます。そして、関数では、while ループで戻る必要はありませんが、見つかった文字列を結果に追加する必要があります (空のリストとして開始する必要があります)。

于 2013-11-05T11:49:12.137 に答える