Группы при поиске в Java
Скобки в регулярном выражении создают группы.
После успешного find найденный фрагмент
целиком лежит в group(0), а содержимое
скобок - в group(1), group(2)
и так далее:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String txt = "123 456";
Pattern pattern = Pattern.compile("(\\d+) (\\d+)");
Matcher matcher = pattern.matcher(txt);
if (matcher.find()) {
System.out.println(matcher.group(0));
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
}
}
}
Количество групп возвращает groupCount.
Нулевая группа в это число не входит: она всегда
обозначает совпадение целиком.
Дана строка, содержащая домен:
String txt = "sss domain.ru zzz";
Найдите домен, выделите имя в первую группу, а зону - во вторую.
Дана строка, содержащая дату:
String txt = "31.12.2025";
Выделите день в первую группу, месяц - во вторую, а год - в третью.