Ho riletto ora il tutorial ... già è vero: group e groupCount hanno a che fare con il testo "catturato" dalle parentesi ( ) !

Ecco un altro esempio:
codice:
String patternStr = "c(.)(.)o";
String inputStr = "ciao  ciccia  caio";

Pattern pattern = Pattern.compile (patternStr);
Matcher matcher = pattern.matcher (inputStr);

while (matcher.find ())
{
    System.out.println ("Trovata occorrenza: " +
                        "start=" + matcher.start () + "   " +
                        "end=" + matcher.end () + "   " +
                        "group=" + matcher.group () + "   " +
                        "groupCount=" + matcher.groupCount ());

    for (int i = 1; i <= matcher.groupCount (); i++)
        System.out.println ("  group" + i + "=" + matcher.group (i));
}
Stampa:
codice:
Trovata occorrenza: start=0   end=4   group=ciao   groupCount=2
  group1=i
  group2=a
Trovata occorrenza: start=14   end=18   group=caio   groupCount=2
  group1=a
  group2=i