sheet - java util regex
¿Qué es un "grupo de captura independiente" de expresiones regulares? (3)
De la documentación de Java 6 Pattern :
Construcciones especiales (no capturas)
(?:
X)
X , como un grupo no capturante...
(?>
X)
X , como un grupo independiente, no capturante
Entre (?:X)
y (?>X)
¿cuál es la diferencia? ¿Qué significa el independiente en este contexto?
Significa que la agrupación es atómica y descarta la información de retroceso para un grupo coincidente. Entonces, esta expresión es posesiva; no retrocederá aunque hacerlo sea la única forma en que la expresión regular en su conjunto tenga éxito. Es "independiente" en el sentido de que no coopera, mediante retroceso, con otros elementos de la expresión regular para garantizar una coincidencia.
Si tiene foo(?>(co)*)co
, eso nunca coincidirá. Estoy seguro de que hay ejemplos prácticos de cuándo sería útil, pruebe el libro de O''Reilly.
(?>X[?/*/+])
Es lo mismo que (?:X)[?/*/+]+
.