Ответ 1
Нумерация подгрупп начинается с 1, 0 - полный текст. Просто перейдите к счету + 1 с помощью вашей петли.
Я пытаюсь захватить нужную часть после: using java expr, но в следующем коде печатная группа захвата представляет собой целую строку, что неправильно?
String s ="xyz: 123a-45";
String patternStr="xyz:[ \\t]*([\\S ]+)";
Pattern p = Pattern.compile(patternStr);
Matcher m = p.matcher(s);
//System.err.println(s);
if(m.find()){
int count = m.groupCount();
System.out.println("group count is "+count);
for(int i=0;i<count;i++){
System.out.println(m.group(i));
}
}
Нумерация подгрупп начинается с 1, 0 - полный текст. Просто перейдите к счету + 1 с помощью вашей петли.
Это потому, что индексы групп начинаются с 1. Группа 0 - это весь шаблон.
Из JavaDoc: "Группы захвата индексируются слева направо, начиная с единицы. Ноль группы обозначает весь шаблон, поэтому выражение m.group(0) эквивалентно m.group()". Подробнее здесь