Опитвам се да заснемам дясната част след: използване на 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));
}
}
Отговори:
29 за отговор № 1Номерирането на подгрупи започва с 1, 0 е пълен текст. Просто отидете до броя + 1 с цикъла си.
1 за отговор № 2
Това е така, защото индексите на групата започват с 1. Група 0 е целият модел.
От JavaDoc: "Групата за заснемане се индексира от ляво на дясно, започвайки от една. Група нула обозначава целия шаблон, така че изразът m.group (0) е еквивалентен на m.group ()." Виж повече тук