Мне нужно использовать некоторые регулярные выражения для разбора более сложного текста, и мне интересно, можно ли использовать группы без захвата для сопоставления нескольких чисел и их извлечения? Я понимаю, что могу сопоставить числа, разделенные пробелами, а затем разделить их на пробелы, но мне бы хотелось получить все числа в разных группах, даже если я не знаю их количество.
Пример ниже соответствует только последнему номеру:
----Start----
--------
i 0 11 22 4444
i 1 4444
--------
i 0 34 56
i 1 56
Но я бы хотел получить:
----Start----
--------
i 0 11 22 4444
i 1 11
i 2 22
i 3 4444
--------
i 0 34 56
i 1 34
i 2 56
Вот мой код:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main{
public static void main(String[] args) throws IOException, InterruptedException {
System.out.println("----Start----");
Pattern compile = Pattern.compile("(?:(\\d+)\\s*)+");
String s = "11 22 4444 mam a 34 56";
Matcher matcher = compile.matcher(s);
while(matcher.find()){
System.out.println("--------");
for (int i=0;i<matcher.groupCount()+1;i++){
System.out.println("i " + i = " " + matcher.group(i));
}
}
}
}