Técnicas de golf

Cualquiera puede escribir una regex que funcione. Quien caza de verdad escribe la MÁS CORTA que funcione. Esto es golf de regex: separa a los monstruos de los inocentes con el menor número de caracteres, con un truco nuevo para afinar en cada paso, e iguala o mejora el par en cada tablero.

Lee las reglas: Trucos para patrones más cortos en la Guía →

Qué aprenderás

Abreviaturas antes que clases Clases antes que alternancia Anclas solo si hacen falta Trucos con referencias inversas

Pasos · 12

  1. 01Gana quien use menos caracteresInstrucciones
  2. 02Quita las anclas innecesariasCaza
  3. 03\d gana a [0-9]Caza
  4. 04. gana a una clase grandeCaza
  5. 05Una clase gana a la alternanciaCaza
  6. 06Encuentra la única diferenciaCaza
  7. 07Referencia inversa para repeticionesCaza
  8. 08Usa un rango, no una listaCaza
  9. 09Un punto, sin claseCaza
  10. 10Ancla solo cuando haga faltaCaza
  11. 11Golf: ab, una y otra vezCaza
  12. 12Caja de herramientas completaInstrucciones

Regex golf: patrones más cortos

El regex golf es un puzzle: te dan dos listas de palabras y escribes la regex más corta que coincida con todas las de la primera lista y con ninguna de la segunda. El nombre viene del code golf, donde gana quien usa menos caracteres. En Regex Hunter cada tablero tiene un par, la longitud de una respuesta corta conocida, y si lo igualas o lo mejoras ganas una estrella.

El golf cambia tu forma de leer un patrón. Dejas de describir la palabra entera y buscas el único rasgo que separa las listas: una letra que solo tienen los monstruos, una terminación común, un carácter doble. Las abreviaturas como \d y \w, el punto, las clases de caracteres, las cantidades como {4} y el ? opcional dicen lo mismo con menos caracteres.

Un patrón de golf solo promete funcionar con las palabras que tiene delante. Para un puzzle está bien, y es una buena forma de aprender qué hace de verdad cada símbolo. En código de producción, quédate con el patrón más claro, el que también maneja las entradas que aún no has visto.

Ejemplos

  1. /gr.y/

    Atrapa

    • gray
    • grey

    Deja libre

    • green
    • great
    • groovy

    gray|grey tiene 9 caracteres y gr[ae]y, 7; con estas palabras, el punto hace el mismo trabajo con 4.

  2. /\d{4}/

    Atrapa

    • pin 4821
    • year 1999
    • ref 20261

    Deja libre

    • pin 482
    • 12 to 34

    \d\d\d\d (8 caracteres) pasa a ser \d{4} (5); una cantidad entre llaves sale a cuenta en cuanto una abreviatura se repite tres veces.

  3. /d$/

    Atrapa

    • jumped
    • walked
    • played

    Deja libre

    • jumps
    • walking
    • player

    ^[a-z]+ed$ describe a los monstruos, pero solo ellos terminan en d, así que aquí basta con d$ (2 caracteres).

  4. /favou?rite/

    Atrapa

    • favorite
    • favourite

    Deja libre

    • favor
    • favour
    • fav

    favourite|favorite tiene 18 caracteres; favou?rite hace opcional la u y solo necesita 10.

Errores frecuentes

  • Acortar de más. Comprueba cada recorte contra todas las palabras inocentes; con una sola coincidencia de más, el patrón corto deja de valer.
  • Mantener costumbres que cuestan caracteres. Las anclas, (?:…) y [0-9] tienen sentido en código real, pero en un tablero de golf cada una es un carácter que tienes que justificar.
  • Escribir antes de leer. Compara primero las dos listas; el rasgo que las separa suele estar al principio o al final de las palabras, no en medio.

Lee las reglas: Trucos para patrones más cortos en la Guía →

Lee más: El golf de regex de xkcd: el puzzle detrás del cómic 1313 →

Lee más: Estrategias de golf de regex: cómo superar el par →

Lee más: Te damos la bienvenida a Regex Hunter — y al placer del golf de regex →

Jugar la caza del día →