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
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