Имею такой паттерн:
(?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-демо.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей