Expressão regular com número variável de grupos?

É possível criar uma expressão regular com um número variável de grupos?

Depois de executar isso, por exemplo ...

Pattern p = Pattern.compile("ab([cd])*ef");
Matcher m = p.matcher("abcddcef");
m.matches();

... eu gostaria de ter algo como

m.group(1) = "c"m.group(2) = "d"m.group(3) = "d"m.group(4) = "c".

(Antecedentes: estou analisando algumas linhas de dados e um dos "campos" está se repetindo. Gostaria de evitar umamatcher.find loop para esses campos.)

Conforme apontado por @Tim Pietzcker nos comentários,perl6 e.INTERNET tem esse recurso.

questionAnswers(6)

yourAnswerToTheQuestion