Regular Expressions Grupos de captura básicos


Ejemplo

Un grupo es una sección de una expresión regular entre paréntesis () . Esto se denomina comúnmente "subexpresión" y tiene dos propósitos:

  • Hace que la subexpresión sea atómica, es decir, que coincida, falle o se repita como un todo.
  • La parte del texto que coincidió es accesible en el resto de la expresión y el resto del programa.

Los grupos están numerados en los motores de expresiones regulares, comenzando con 1. Tradicionalmente, el número máximo de grupos es 9, pero muchos de los sabores de expresiones regulares modernas admiten un mayor número de grupos. El grupo 0 siempre coincide con todo el patrón, de la misma manera que rodea toda la expresión regular con corchetes.

El número ordinal aumenta con cada paréntesis de apertura, independientemente de si los grupos se colocan uno tras otro o anidados:

foo(bar(baz)?) (qux)+|(bla)
   1   2       3      4

grupos y sus numeros

Después de que una expresión logre una coincidencia global, todos sus grupos estarán en uso, ya sea que un grupo en particular haya logrado igualar algo o no.

Un grupo puede ser opcional, como (baz)? arriba, o en una parte alternativa de la expresión que no se usó de la coincidencia, como (bla) arriba. En estos casos, los grupos no coincidentes simplemente no contendrán ninguna información.

Si se coloca un cuantificador detrás de un grupo, como en (qux)+ arriba, el recuento global de grupos de la expresión permanece igual. Si un grupo coincide más de una vez, su contenido será la última vez que se produzca la coincidencia. Sin embargo, las versiones modernas de expresiones regulares permiten acceder a todas las apariciones de subincidencia.


Si desea recuperar la fecha y el nivel de error de una entrada de registro como esta:

2012-06-06 12:12.014 ERROR: Failed to connect to remote end

Podrías usar algo como esto:

^(\d{4}-\d{2}-\d{2}) \d{2}:\d{2}.\d{3} (\w*): .*$

Esto extraería la fecha de la entrada de registro 2012-06-06 como grupo de captura 1 y el nivel de error ERROR como grupo de captura 2.