問題を簡単な英語で説明する方法がわかりませんので、私は正規表現の例を参考にしています。複数のオカレンスが一致する場合、各グループをキャプチャする方法はありますか?
((\\d+) - (\\d+)\n)+
このパターンは、一度にこれらの行に一致します:私はこれに類似したもの(例はほとんど簡略化されている)を持っている
123 - 23
32 - 321
3 - 0
99 - 55
パターンは3つのグループが含まれています:最初の1行を一致して、 2行目は行の最初の番号と一致し、3行目は行の2番目の番号と一致します。
これらの番号をすべて取得する可能性はありますか? Matcherには3つのグループしかありません。最初のものは99 - 55
、2番目のものは99
、3番目のものは55
です。
SSCCE:
class Test {
private static final Pattern pattern = Pattern.compile("((\\d+) - (\\d+)\n)+");
public static void parseInput(String input) {
Matcher matcher = pattern.matcher(input);
if (matcher.matches()) {
for (int i = 0; i <= matcher.groupCount(); i++) {
System.out.println("------------");
System.out.println("Group " + i + ": " + matcher.group(i));
}
System.out.println();
}
}
public static void main(String[] args) {
parseInput("123 - 23\n32 - 321\n3 - 0\n99 - 55\n");
}
}
マッチャーですか?matches()またはmatcher.find()を呼び出すたびにそれをやり直しますか? (またはその両方) –
私は昨日「試合」について質問し、それを読んでいるので、かなり確信しています。残念なことに、「見つける」、私は知らない。 –
私はそれを動作させることはできません。この作業に成功したコードはありますか? – Roman