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.*finEste patrón intentará capturará todo el contenido hasta el último fin que encuentre. Vamos a probarlo
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.*?finEste patrón intentará capturará el contenido hasta el primer fin que encuentre. Vamos a probarlo