Я не знаю, как объяснить проблему простым английским языком, поэтому я помогаю себе с примером регулярного выражения. У меня есть что-то похожее на это (пример довольно сильно упрощен):
((\\d+) - (\\d+)\n)+
Этот шаблон соответствует этим строкам сразу:
123 - 23
32 - 321
3 - 0
99 - 55
Шаблон содержит 3 группы: первая соответствует строке, 2-я соответствует первому числу в строке, а третья соответствует второму номеру в строке.
Есть ли возможность получить все эти цифры? У Matcher всего 3 группы. Первый возвращает 99 - 55
, второй - 99
, а третий - 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");
}
}