Cuantificadores
Controla cuántas veces se repite algo —de “quizás una vez” a “exactamente tres”— con ?, *, +, {n,m} y sus formas codiciosas o perezosas.
Lee las reglas: Cuantificadores en la Guía →Entrénalo: La cantera de cuantificadores →
Se basa en Clases de caracteres
Qué aprenderás
Pasos · 13
- 01¿Cuántas veces?Instrucciones
- 02Cero o másCaza
- 03Una o másCaza
- 04OpcionalCaza
- 05Exactamente nCaza
- 06n o másCaza
- 07Un rangoCaza
- 08Repetir una claseCaza
- 09Combinar piezasCaza
- 10Codiciosos por defectoCaza
- 11Hazlo perezosoCaza
- 12Golf: números enterosCaza
- 13Cuantificadores dominadosInstrucciones
Cuantificadores en regex: ?, *, + y {n,m}
Un cuantificador le dice a una regex cuántas veces puede repetirse el elemento que tiene delante. Sin él, cada letra, punto o clase coincide exactamente una vez. Con él, una sola pieza puede estirarse para cubrir una serie de caracteres, o volverse opcional.
Hay cuatro formas que conviene conocer. ? significa cero o una vez, así que marca algo como opcional. * significa cero o más veces y +, una o más. Las llaves dan cantidades exactas: {3} es exactamente tres, {2,} es dos o más y {1,3} es entre una y tres. Un cuantificador actúa sobre una sola letra, sobre una clase como [a-z] o sobre un grupo entre paréntesis.
Por defecto, los cuantificadores son codiciosos: toman todos los caracteres que pueden y solo devuelven alguno si el resto del patrón lo necesita. Pon un ? después de un cuantificador, como en +? o *?, y se vuelve perezoso: toma los menos posibles. En una caza, los cuantificadores permiten que un patrón corto atrape palabras de distintas longitudes y aun así deje libres las que se salen del recuento.
Ejemplos
Atrapa
- goal
- gooooal
Deja libre
- gal
- gaol
+necesita al menos una o, pero admite todas las que quieras.Atrapa
- http:
- https:
Deja libre
- htt:
- ftp:
?hace opcional la s, así que encajan los dos prefijos.Atrapa
- loop
- looop
Deja libre
- lop
- loooop
Las llaves fijan un rango: dos o tres oes entre la l y la p, ni más ni menos.
Atrapa
- .5
- 3.14
- 10.0
Deja libre
- 3.
- 314
*permite que falte la parte entera, mientras que+exige al menos un dígito después del punto.
Errores frecuentes
- Esperar que un cuantificador repita una palabra entera.
ha+solo repite la a (haaa); envuelve esa parte en un grupo,(ha)+, para repetirhaha. - Dejar que un `. *
codicioso llegue demasiado lejos. Sobre"a" and "b", el patrón".*"abarca desde la primera comilla hasta la última; usa".*?"o"[^"]*"` para parar en la más cercana. - Olvidar que
*puede no coincidir con nada.x*coincide con cualquier cadena, incluso con una que no tiene ninguna x, así que usa+cuando haga falta al menos una.
Lee las reglas: Cuantificadores en la Guía →Entrénalo: La cantera de cuantificadores →
Lee más: Cuantificadores codiciosos y perezosos: por qué .* come de más →