00 - Les expressions regulieres, arme secrete ou piège mortel
Ce que tu vas apprendre
- Ce que sont les expressions regulieres et a quoi elles servent
- Quand utiliser (et ne pas utiliser) les regex
- Comment tester tes regex avec regex101.com
- Ce que cette serie de 7 articles couvre
Prerequisites
Aucun. Juste un navigateur et l'envie de comprendre ces suites de caractères bizarres.
"J'avais un problème, j'ai utilise une regex..."
Il y a une blague celebre chez les développeurs :
"J'avais un problème. J'ai décidé d'utiliser une regex. Maintenant j'ai deux problèmes."
Cette citation attribuee a Jamie Zawinski date de 1997 et elle fait encore rire aujourd'hui. Pas parce que les regex sont inutiles, mais parce qu'on les utilise souvent mal, au mauvais moment, pour le mauvais problème.
Moi, j'ai un rapport ambivalent avec les regex. Il y a des jours ou je me sens comme un magicien. Et des jours ou je fixe un pattern de 120 caractères en me demandant si c'est du code ou un chat qui a marche sur le clavier.
La fois ou une regex m'a sauve deux heures
L'annee dernière, je bossais sur un fichier CSV de 15 000 lignes. Des numeros de telephone dans un format anarchique : avec des espaces, des tirets, des parentheses, des prefixes internationaux, certains avec le 0 initial, d'autres sans. Le client voulait tout normaliser au format +33 6 XX XX XX XX.
J'avais deux options : écrire un script Python de 50 lignes avec des conditions partout, ou ouvrir VS Code et faire un search-and-replace avec une regex bien pensee. Trois patterns successifs, dix minutes de travail. Le CSV etait propre.
Sans regex, j'y aurais passe l'apres-midi. Ce jour-la, les regex etaient mon arme secrete.
C'est quoi, une expression régulière ?
Une expression régulière (regular expression, ou regex) est un pattern qui decrit un ensemble de chaînes de caractères. Au lieu de chercher un texte exact, tu decris une forme.
Par exemple :
hellomatche exactement le mot "hello"\d{3}matche n'importe quel nombre a trois chiffres : 123, 456, 789...[A-Z][a-z]+matche un mot qui commence par une majuscule
Les regex existent dans quasi tous les langages : JavaScript, Python, Java, Go, Rust, PHP. Elles sont aussi dans ton éditeur de code (VS Code, IntelliJ, Vim) et dans les outils en ligne de commande comme grep et sed.
Quand utiliser les regex
Les regex brillent dans quelques cas precis :
Validation de format : vérifier qu'une chaîne respecte une structure (email, telephone, code postal, date).
Recherche avancee : trouver des patterns dans un texte (tous les liens HTTP, toutes les adresses IP, tous les mots en majuscules).
Extraction : capturer des morceaux spécifiques d'une chaîne (le domaine dans une URL, le jour dans une date).
Remplacement : transformer du texte en masse (reformater des dates, nettoyer des donnees, renommer des variables).
Quand fuir les regex
Les regex ne sont pas la réponse a tout. Si tu dois parser du HTML complexe, utilise un parser HTML. Si tu dois analyser du JSON, utilise JSON.parse(). Si tu dois valider un email de facon robuste en production, utilise une bibliothèque dédiée.
La regle que je m'impose : si ta regex dépassé une ligne et que tu ne peux pas l'expliquer a un collegue en 30 secondes, il y a probablement un meilleur outil.
regex101.com, ton meilleur ami
Avant d'aller plus loin, ouvre regex101.com. C'est l'outil indispensable pour cette serie. Tu tapes ta regex en haut, ton texte de test en bas, et tu vois en temps réel ce qui matche, ce qui ne matche pas, et pourquoi.
Le site te donne aussi une explication détaillée de chaque partie de ta regex. C'est comme avoir un professeur patient qui ne te juge jamais, meme quand tu ecris .* pour la dixieme fois.
Sur paltemps.fr, on recommande systématiquement regex101 a quiconque debute avec les expressions regulieres. C'est un gain de temps énorme.
Ce que couvre cette serie
| # | Article | Contenu |
|---|---|---|
| 00 | Introduction | Ce que tu lis en ce moment |
| 01 | Les bases | Caractères litteraux, le point, l'echappement |
| 02 | Quantificateurs | *, +, ?, {n,m}, greedy vs lazy |
| 03 | Ancres | ^, $, \b, limites de mots |
| 04 | Classes de caractères | [abc], \d, \w, \s et leurs negations |
| 05 | Groupes | (), alternation, groupes non-capturants |
| 06 | Backreferences | \1, $1, réutiliser les captures |
Chaque article est independant mais ils se construisent les uns sur les autres. Je te conseille de les lire dans l'ordre si tu debutes. Si tu connais deja les bases, saute directement a ce qui t'interesse.
Comment lire cette serie
Chaque article contient des exemples concrets que tu peux copier-coller dans regex101.com. Je te recommande de le faire. Les regex, ca s'apprend en pratiquant, pas en lisant. C'est comme le velo : tu peux lire cent articles sur l'équilibre, a un moment il faut monter dessus.
Résumé
- Les expressions regulieres decrivent des patterns de texte
- Elles sont puissantes pour la validation, la recherche, l'extraction et le remplacement
- Elles ne remplacent pas un vrai parser pour du HTML ou du JSON
- regex101.com est l'outil indispensable pour experimenter
- Cette serie couvre les fondamentaux en 7 articles progressifs
| Article suivant | 01 - Les bases |