Soy nuevo en la codificación de Android, pero tengo experiencia con Perl regex. tenemos que asociar una lista de 0 o más identificadores con una expresión regular como:Referencia a grupos coincidentes anteriores dentro de una expresión regular
^\s*((\w\d\d\d)(\s+$2)*)?$
Nota del $ 2 se refiere al grupo de referencia anterior (\ w \ d \ d \ d) Para el código de Android que lo haría se ven como:
Pattern.compile("^\\s*((\\w\\d\\d\\d)(\\s+\$2)*)?$")
Eclipse compilador no compilar los \ $ 2, he intentado también \ 2, que compila pero intenta hacer coincidir un número literal 2.
la solución de fuerza bruta sería repetir el identificador patrón:
Pattern.compile("^\\s*((\\w\\d\\d\\d)(\\s+(\\w\\d\\d\\d))*)?$")
que funciona, pero tiene las siguientes desventajas: * Es fácil cometer un error de sintaxis, ya sea en la repetición * como el identificador se complica la cadena se hace más grande * No es elegante * se vuelve mucho más complicado si necesita referirse no a uno sino a varias coincidencias anteriores
¿Hay alguna manera en Java de referirse a los grupos coincidentes anteriores dentro de la expresión regular?
has intentado 'Pattern.compile ("^\\ s * ((\\ w \\ d \\ d \\ d) (\\ s + \\ 2) *)? $ ")' Creo que la referencia es \ N donde N es tu grupo. Aunque tiene que hacer una barra invertida en la barra inversa con '\\ N' –
Sí, tengo el valor \\ 2 como literal 2 (se me olvidó duplicar la barra invertida en la publicación original, pero esto es lo que quise decir). – ilomambo