Имею такой паттерн:
(?m).*\\bkey\b\\s+(\\w+)\\s+(\\w+).*
и например, такой текст:
key type value
При поиске с функцией .find(), вывожу все группы:
for (int i = 0; i < matcher.groupCount(); i++) {
System.out.println(matcher.group(i));
}
но здесь он почему-то не выводит 'value', результат:
key type value
type
в чем может быть дело?
Количество групп, возвращаемых groupCount(), это количество захватывающих групп в шаблоне + целое совпадение.
String s = "key type value";
Pattern pattern = Pattern.compile("(?m).*\\bkey\\b\\s+(\\w+)\\s+(\\w+).*");
Matcher matcher = pattern.matcher(s);
while(matcher.find()) {
for (int i = 0; i <= matcher.groupCount(); i++) { // Тут i <= matcher.groupCount()
System.out.println(matcher.group(i));
}
}
См. Java-демо.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники