Utilizzando i metodi delle espressioni regolari non mi fornisce la stringa corrispondente al match, perchè?

patternStr = "c";
inputStr = "a b c d ";
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(inputStr);
String groupStr = "";
System.out.println("number match = " + matcher.groupCount());
System.out.println("match = " + matcher.find() + " " + matcher.matches());
if (matcher.matches()) {
for (int i = 0; i <= matcher.groupCount(); i++) {
groupStr += matcher.group(i);
}
}
return groupStr;

matcher.find() restituisce true, cioè ha trovato una stringa, mentre matcher.matches() false e quindi anche matcher.group(i) non restituisce nulla.....
Non capisco il motivo.

Grazie!