Expressions régulières pour les débutants : une introduction pratique
Les expressions régulières — « regex » — donnent l'impression que quelqu'un s'est endormi sur le clavier : ^\d{3}-\d{4}$. Mais derrière les symboles énigmatiques se cache l’un des outils de programmation les plus puissants : un petit langage permettant de décrire et de faire correspondre des modèles dans un texte. Apprenez les bases et vous gagnerez des heures sur des tâches telles que la validation, la recherche et la recherche et le remplacement.
À quoi sert l'expression régulière
Une expression régulière décrit un modèle et un moteur d'expression régulière trouve (ou valide ou remplace) le texte qui lui correspond. "Trouver toutes les adresses e-mail", "vérifier qu'il s'agit d'un numéro de téléphone valide", "remplacer chaque double espace par un" - ce sont toutes des tâches regex. Il est pris en charge dans pratiquement tous les langages de programmation et dans la plupart des éditeurs de texte.
Les éléments de base
.— correspond à n'importe quel caractère.\d— n'importe quel chiffre ;\w— n'importe quel caractère de mot ;\s— n'importe quel espace.*— zéro ou plus ;+— un ou plusieurs ;?— facultatif.{3}: exactement trois ;{2,5}— entre deux et cinq.^et$— début et fin de la chaîne.[abc]— l'un des a, b ou c ;[a-z]— n'importe quelle lettre minuscule.
Lire un exemple réel
Prenez ^\d{3}-\d{4}$. Morceau par morceau : début de chaîne, exactement trois chiffres, un trait d'union, exactement quatre chiffres, fin de chaîne. Cela correspond donc à "123-4567" mais pas à "12-4567". Du coup, c'est lisible, pas magique.
Testez avant de faire confiance
La règle d'or des regex : n'utilisez jamais un modèle que vous n'avez pas testé par rapport à des exemples réels : il est facile de se tromper subtilement (en faisant correspondre trop ou pas assez). Créez et testez des modèles avec mise en évidence en direct dans notre testeur d'expressions régulières, en essayant à la fois les chaînes qui doivent correspondre et celles qui ne devraient pas correspondre.
Où aller plus loin
Une fois les bases acquises, des concepts tels que les groupes, l'alternance et les anticipations élargissent ce que vous pouvez faire. Le guide des expressions régulières MDN est une excellente référence riche en exemples pour les prochaines étapes.
Capturer des groupes : extraire, pas seulement faire correspondre
Les parenthèses dans une expression régulière ont une double fonction : elles regroupent des parties d'un modèle et "capturent" ce à quoi elles correspondent afin que vous puissiez l'extraire. Un modèle comme (\d{4})-(\d{2})-(\d{2}) contre une date ne confirme pas seulement le format ; il vous remet l'année, le mois et le jour séparément. Les groupes de capture transforment les regex d'un validateur oui/non en un outil permettant d'extraire des données structurées d'un texte désordonné – l'une de ses utilisations quotidiennes les plus puissantes.
Le piège des gourmands
Par défaut, les quantificateurs comme * et + sont "gourmands" : ils en saisissent autant que possible. Ainsi, <.+> contre correspond à la chaîne entière, pas seulement à la première balise, car elle récupère tout jusqu'au dernier >. L'ajout de ? rend un quantificateur "paresseux" (<.+?>), correspondant le moins possible. Cette distinction entre gourmands et paresseux est à l'origine d'une grande partie des casse-tête du type "mes regex correspondent trop".
Sachez quand NE PAS utiliser les expressions régulières
Regex est puissant mais pas toujours le bon outil. L’analyse HTML ou JSON avec regex est notoirement fragile – utilisez plutôt un véritable analyseur. Et une expression régulière trop intelligente peut être illisible et lente (certains modèles provoquent même un retour en arrière catastrophique qui bloque votre application). La règle générale : les expressions régulières brillent pour les modèles bien définis en texte brut ; pour les formats structurés, optez pour un analyseur dédié. testez toujours votre modèle par rapport à des données réelles avant de lui faire confiance.
Résultat
Regex est un langage compact permettant de faire correspondre des modèles de texte ; il est inestimable pour la validation, la recherche et le remplacement une fois que vous connaissez les éléments de base. Apprenez les symboles courants, lisez les modèles de gauche à droite et testez toujours par rapport à des données réelles. Cela paie plusieurs fois la petite courbe d'apprentissage.