Techniques de golf
N'importe qui peut écrire une regex qui fonctionne. Le vrai défi, c'est d'écrire la PLUS COURTE qui fonctionne. C'est le golf de regex : séparer les monstres des innocents avec le moins de caractères possible, une astuce à la fois, et égaler ou battre le par sur chaque plateau.
Lire les règles : Astuces pour des motifs plus courts dans le Guide →
Fait suite à Validateurs du monde réel
Ce que vous allez apprendre
Étapes · 12
- 01Le moins de caractères l'emporteBriefing
- 02Abandonnez les ancres inutilesChasse
- 03\d bat [0-9]Chasse
- 04. bat une grande classeChasse
- 05Une classe bat l'alternanceChasse
- 06Trouvez la seule différenceChasse
- 07Une référence arrière pour les répétitionsChasse
- 08Une plage, pas une listeChasse
- 09Un point, pas de classeChasse
- 10N'ancrez que si nécessaireChasse
- 11Golf : ab, encore et encoreChasse
- 12Boîte à outils complèteBriefing
Golf de regex : écrire des motifs plus courts
Le golf de regex est un casse-tête : on vous donne deux listes de mots, et vous écrivez la regex la plus courte qui correspond à chaque mot de la première liste et à aucun de la seconde. Le nom vient du code golf, où le plus petit score gagne. Sur Regex Hunter, chaque plateau a un par, la longueur d'une réponse courte connue, et égaler ou battre le par rapporte une étoile.
Le golf change votre façon de lire un motif. Vous arrêtez de décrire le mot entier et cherchez le seul trait qui sépare les deux listes : une lettre que seules les cibles contiennent, une terminaison commune, un caractère doublé. Les raccourcis comme \d et \w, le point, les classes de caractères, les nombres comme {4} et le ? facultatif disent tous la même chose en moins de caractères.
Un motif golfé ne promet de fonctionner que sur les mots qu'il a sous les yeux. C'est très bien pour un puzzle, et c'est une bonne façon d'apprendre ce que fait vraiment chaque symbole. Dans du code en production, préférez le motif plus clair qui gère aussi les entrées que vous n'avez pas encore vues.
Exemples
Attrapés
- gray
- grey
Épargnés
- green
- great
- groovy
gray|greyfait 9 caractères etgr[ae]y7 ; sur ces mots, le point fait le même travail en 4.Attrapés
- pin 4821
- year 1999
- ref 20261
Épargnés
- pin 482
- 12 to 34
\d\d\d\d(8 caractères) devient\d{4}(5) ; un nombre entre accolades devient rentable dès qu'un raccourci se répète trois fois.Attrapés
- jumped
- walked
- played
Épargnés
- jumps
- walking
- player
^[a-z]+ed$décrit les cibles, mais elles seules finissent pard:d$(2 caractères) suffit ici.Attrapés
- favorite
- favourite
Épargnés
- favor
- favour
- fav
favourite|favoritefait 18 caractères ;favou?riterend leufacultatif et n'en demande que 10.
Erreurs courantes
- Raccourcir un cran de trop. Revérifiez chaque coupe sur tous les mots innocents : une seule correspondance en trop et le motif plus court ne compte plus.
- Garder des habitudes qui coûtent des caractères. Les ancres,
(?:…)et[0-9]ont du sens dans du vrai code, mais sur un plateau de golf, chacun est un caractère que vous devez justifier. - Écrire avant de lire. Comparez d'abord les deux listes : le trait qui les sépare se trouve souvent au début ou à la fin des mots, pas au milieu.
Lire les règles : Astuces pour des motifs plus courts dans le Guide →
À lire aussi : Le golf de regex de xkcd : l'énigme derrière la BD 1313 →
À lire aussi : Stratégies pour le golf de regex : comment battre le par →
À lire aussi : Bienvenue sur Regex Hunter, et vive le golf de regex →