Annonces

Bienvenue sur Regex Hunter, et vive le golf de regex

Attrapez chaque monstre, épargnez chaque innocent, et faites-le avec le moins de caractères possible. Voici ce qu'est le jeu, pourquoi il vaut le détour, et une première astuce pour raboter votre score.

Logo de Regex Hunter

· 2 min de lecture

/cat|car|can/

à attraper

  • cat
  • carpet

à épargner

  • cow
  • dog

01Le chemin le plus court gagne

Chaque jour, Regex Hunter vous donne deux listes de mots. La première, ce sont les monstres : les mots que votre motif doit attraper. La seconde, ce sont les innocents : les mots qu'il doit laisser filer. Écrivez une seule expression régulière qui attrape tous les monstres et aucun innocent, et la chasse est gagnée.

La subtilité : chaque caractère se paie. Le but n'est pas un motif qui marche, c'est le motif le plus court qui marche. C'est ça, le golf de regex : comme au sport dont il tire son nom, le score le plus bas remporte le trophée.

02Une leçon en deux caractères

Imaginons la chasse suivante :

  • À attraper : cat, car, can
  • À épargner : dog, bus

La réponse évidente consiste à écrire chaque monstre en toutes lettres :

Motif11 car. · 3 fragments
/cat|car|can/

Touchez un fragment pour le repérer

Essayez-le dans le bac à sable

Onze caractères, et ça marche. Mais regardez de plus près : tous les monstres commencent par ca, et aucun innocent ne contient ces deux lettres. Une regex n'a pas besoin de correspondre à un mot entier ; il lui suffit de trouver son motif quelque part à l'intérieur. Ceci suffit donc :

Motif2 car.
/ca/
Essayez-le dans le bac à sable

Deux caractères. Même résultat. Ce saut, de « écrire la réponse en entier » à « trouver le plus petit point commun des monstres, absent chez les innocents », c'est tout le jeu en miniature.

03Pourquoi jouer ?

Les regex sont partout : rechercher-remplacer, filtrage de logs, validation de formulaires, ce fichier de config que personne ne comprend vraiment. La plupart des gens en apprennent juste assez pour s'en sortir, sans jamais se sentir à l'aise. Le golf renverse la pression habituelle. Au lieu de « faire marcher le truc », vous vous demandez « que se passe-t-il vraiment ici ? », et c'est grâce à cette question que la syntaxe fait enfin tilt. Classes de caractères, ancres, alternance, quantificateurs : vous les utilisez parce qu'elles vous font gagner des caractères, et vous les retenez parce que vous les avez méritées.

Et puis, c'est tout simplement amusant. Il y a une satisfaction bien particulière à voir un motif maladroit de 20 caractères fondre en six caractères bien nets.

04Trois réflexes pour commencer

  • Cherchez d'abord les sous-chaînes communes. Avant d'écrire une alternance, demandez-vous ce que les monstres ont en commun et que les innocents n'ont pas.
  • N'abusez pas des ancres. ^ et $ coûtent des caractères et sont souvent inutiles. Ajoutez-les seulement quand un innocent vous y oblige.
  • Misez sur les classes de caractères. [aeiou] bat a|e|i|o|u, et \d bat [0-9].

05Rendez-vous sur le plateau

Une nouvelle chasse tombe chaque jour, et il y a toutes les archives ainsi que des packs d'entraînement si vous voulez vous échauffer d'abord. Lancez la chasse du jour, trouvez le point faible des monstres, et voyez jusqu'où vous pouvez descendre.

Bonne chasse.