Вы можете использовать методы объекта Matcher, чтобы увидеть, какие группы соответствуют. Вот пример:
import java.util.regex.*;
class RegexExample
{
public static void main(String[] args) {
String input = "foo baz bar foo";
String regex = "(foo)|(bar)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
for (int i = 1; i <= matcher.groupCount(); ++i) {
if (matcher.group(i) != null)
{
System.out.println("Group " + i + " matched.");
}
}
}
}
}
Выход:
Group 1 matched.
Group 2 matched.
Group 1 matched.