Expresión regular con número variable de grupos

Es posible crear una expresión regular con un número variable de grupos?

Después de ejecutar esto, por ejemplo ...

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

... Me gustaría tener algo como

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

(Antecedentes: estoy analizando algunas líneas de datos y uno de los "campos" se repite. Me gustaría evitar unmatcher.find loop para estos campos.)

Como señaló @Tim Pietzcker en los comentarios, perl6 y.RE tiene esta característica.

Respuestas a la pregunta(6)

Su respuesta a la pregunta