regex-codicioso-no-codicioso

Cuantificadores codiciosos y no codiciosos en Regex

Por defecto, los cuantificadores en Regex son codiciosos (greedy), lo que significa que intentarán hacer coincidir la mayor cantidad posible de repeticiones dentro de la cadena de texto.

Sin embargo, a veces necesitamos que el patrón sea más conservador y coincida con la menor cantidad posible de caracteres. Para esto, usamos cuantificadores no codiciosos (lazy).

Cuantificadores codiciosos

Los cuantificadores que hemos visto hasta ahora (*, +, {n,m}) son codiciosos y tratan de capturar el máximo número de coincidencias posibles.

Por ejemplo, esta regular expression

inicio.*fin

Este patrón intentará capturará todo el contenido hasta el último fin que encuentre. Vamos a probarlo

inicio contenido en medio fin fin fin otra cosa

Cuantificadores no codiciosos

Para que un cuantificador sea no codicioso, añadimos un ? después del cuantificador. Así, se buscará la menor cantidad posible de coincidencias.

Por ejemplo, si cambiamos la regular expresión añadiendo ? al cuantificador *

inicio.*?fin

Este patrón intentará capturará el contenido hasta el primer fin que encuentre. Vamos a probarlo

inicio contenido en medio fin fin fin otra cosa