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 →

Qué aprenderás

Cero o más Una o más Opcional Repetición {n} Codicioso o perezoso

Pasos · 13

  1. 01¿Cuántas veces?Instrucciones
  2. 02Cero o másCaza
  3. 03Una o másCaza
  4. 04OpcionalCaza
  5. 05Exactamente nCaza
  6. 06n o másCaza
  7. 07Un rangoCaza
  8. 08Repetir una claseCaza
  9. 09Combinar piezasCaza
  10. 10Codiciosos por defectoCaza
  11. 11Hazlo perezosoCaza
  12. 12Golf: números enterosCaza
  13. 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

  1. /go+al/

    Atrapa

    • goal
    • gooooal

    Deja libre

    • gal
    • gaol

    + necesita al menos una o, pero admite todas las que quieras.

  2. /https?:/

    Atrapa

    • http:
    • https:

    Deja libre

    • htt:
    • ftp:

    ? hace opcional la s, así que encajan los dos prefijos.

  3. /lo{2,3}p/

    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.

  4. /\d*\.\d+/

    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 repetir haha.
  • 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 →