Все группы совпадения в Java
В Java нет отдельного объекта-кортежа для всех
групп совпадения. Если нужно пройтись по ним
одним циклом, используют groupCount
и номера group(n):
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String txt = "123 456 789";
Pattern pattern = Pattern.compile("(\\d)(\\d)(\\d)");
Matcher matcher = pattern.matcher(txt);
if (matcher.find()) {
List<String> groups = new ArrayList<>();
for (int i = 0; i <= matcher.groupCount(); i++) {
groups.add(matcher.group(i));
}
System.out.println(groups);
}
}
}
Цикл начинается с нуля, если нужно включить
полное совпадение. Если нужны только группы
из скобок, начинайте с 1.
Дана строка с адресом сайта:
String txt = "http://domain.ru";
Разложите протокол, имя домена и зону по отдельным группам и выведите их одним списком в консоль.