Hola charlyalegret:
Muchas gracias por tu respuesta
Precisamente he intentado utilizar preg_match_all, pero no hay forma de diferenciar las barras de los subpatrones de las del segundo nivel de subpatrones:
Si lo parto por las barras:
\(coches\s*(\w{1,}\s*?){0,3}\s*(rojos?|
azul(es)?)? |
moto(cicleta)?s?|
camion((es)?|
(azo|
cito)s?))\
Estoy buscando algo que me devuelva los grupos de subpatrones recursivamente tal y como creo que hace un motor de expresiones regulares:
Grupo 1:
\(coches\s*(\w{1,}\s*?){0,3}\s*(rojos?|azul(es)?)? |
Grupo 1.1:
coches\s*(\w{1,}\s*?){0,3}\s*
Grupo 1.1.1:
coches\s
Grupo 1.1.2:
coches\s
\w{1,}\s*?){0,3}
Grupo 1.2:
(rojos?|azul(es)?)?
Grupo 1.2.1:
rojos?
Grupo 1.2.1:
azul(es)?
Grupo 2:
moto(cicleta)?s?|
...
Grupo 3:
camion((es)?|(azo|cito)s?))\
...
Es un poco enrevesado...