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 →
Se basa en Validadores del mundo real
Qué aprenderás
Pasos · 12
- 01Gana quien use menos caracteresInstrucciones
- 02Quita las anclas innecesariasCaza
- 03\d gana a [0-9]Caza
- 04. gana a una clase grandeCaza
- 05Una clase gana a la alternanciaCaza
- 06Encuentra la única diferenciaCaza
- 07Referencia inversa para repeticionesCaza
- 08Usa un rango, no una listaCaza
- 09Un punto, sin claseCaza
- 10Ancla solo cuando haga faltaCaza
- 11Golf: ab, una y otra vezCaza
- 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
Atrapa
- gray
- grey
Deja libre
- green
- great
- groovy
gray|greytiene 9 caracteres ygr[ae]y, 7; con estas palabras, el punto hace el mismo trabajo con 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.Atrapa
- jumped
- walked
- played
Deja libre
- jumps
- walking
- player
^[a-z]+ed$describe a los monstruos, pero solo ellos terminan end, así que aquí basta cond$(2 caracteres).Atrapa
- favorite
- favourite
Deja libre
- favor
- favour
- fav
favourite|favoritetiene 18 caracteres;favou?ritehace opcional lauy 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 →