Tengo entendido que el java.regex
paquete no tiene soporte para grupos con nombre ( http://www.regular-expressions.info/named.html ), así que ¿alguien puede señalarme hacia una biblioteca de terceros que sí lo tenga?
Miré a jregex pero su último lanzamiento fue en 2002 y no funcionó para mí (es cierto que solo lo intenté brevemente) en java5.
Respuestas:
( Actualización : agosto de 2011 )
Como geofflane menciona en su respuesta , Java 7 ahora admite grupos con nombre .
tchrist señala en el comentario que el apoyo es limitado.
Se detalla las limitaciones en su gran respuesta " Java Regex Helper "
El soporte de grupo denominado Java 7 regex se presentó en septiembre de 2010 en el blog de Oracle .
En el lanzamiento oficial de Java 7, las construcciones para soportar el grupo de captura nombrado son:
Otras alternativas para pre-Java 7 fueron:
( Respuesta original : enero de 2009 , con los siguientes dos enlaces ahora rotos)
No puede hacer referencia al grupo con nombre, a menos que codifique su propia versión de Regex ...
Eso es precisamente lo que hizo Gorbush2 en este hilo .
Regex2
(implementación limitada, como lo señaló nuevamente tchrist , ya que solo busca identificadores ASCII. tchrist detalla la limitación como:
Nota: Puede encontrar ejemplos de recursividad de expresiones regulares verdaderas en expresiones regulares de Perl y PCRE, como se menciona en Regexp Power , especificaciones de PCRE y diapositivas de Correspondencia con paréntesis equilibrados )
Ejemplo:
Cuerda:
RegExp:
Acceso
Reemplazar
(extracto de la implementación)
fuente
Para las personas que llegan tan tarde: Java 7 agrega grupos con nombre. Matcher.group (String groupName) documentación.
fuente
Sí, pero es desordenado hackear las clases de sol. Hay una forma más simple:
http://code.google.com/p/named-regexp/
fuente
¿Qué tipo de problema tienes con jregex ? Me funcionó bien en java5 y java6.
Jregex hace bien el trabajo (incluso si la última versión es de 2002), a menos que desee esperar a Java 7 .
fuente
Para aquellos que ejecutan pre-java7, los grupos con nombre son compatibles con joni (puerto Java de la biblioteca de expresiones regulares Oniguruma ). La documentación es escasa, pero nos ha funcionado bien.
Los binarios están disponibles a través de Maven ( http://repository.codehaus.org/org/jruby/joni/joni/ ).
fuente
Una pregunta un poco vieja, pero me encontré necesitando esto también y que las sugerencias anteriores eran inadecuadas, y como tal, desarrollé un envoltorio delgado: https://github.com/hofmeister/MatchIt
fuente