← Retour au testeur de regex AdminTools.fr — Guide développement

Comprendre les expressions régulières

Les expressions régulières (regex) permettent de décrire un motif de texte de façon compacte — validation de formulaire, recherche dans des logs, remplacement en masse. Ce guide couvre la syntaxe essentielle et les pièges à éviter.

Sommaire
La syntaxe de base Les drapeaux (flags) Groupes capturants et non capturants Le piège du "catastrophic backtracking" Où utilise-t-on des regex en administration IT ? Erreurs courantes Questions fréquentes

La syntaxe de base

Une expression régulière décrit un motif que le moteur regex tente de faire correspondre à un texte. Quelques briques de base couvrent la majorité des besoins :

SymboleSignification
.N'importe quel caractère (sauf saut de ligne par défaut)
\d / \w / \sChiffre / caractère alphanumérique / espace
* / + / ?0 ou plus / 1 ou plus / 0 ou 1 répétition du caractère précédent
{n,m}Entre n et m répétitions
[abc] / [^abc]Un caractère parmi a,b,c / un caractère qui n'est ni a, ni b, ni c
^ / $Début / fin de la chaîne (ou de ligne avec le drapeau m)

Les drapeaux (flags)

Les drapeaux modifient le comportement global du moteur regex :

Groupes capturants et non capturants

Les parenthèses (...) créent un groupe capturant : la portion de texte correspondante est mémorisée et peut être réutilisée (par exemple lors d'un remplacement, ou extraite individuellement). Un groupe non capturant (?:...) sert uniquement à structurer le motif (par exemple pour grouper une alternative |) sans mémoriser la correspondance — plus performant quand la capture n'est pas nécessaire.

Le piège du "catastrophic backtracking"

Certains motifs regex, notamment ceux combinant des répétitions imbriquées sur des groupes ambigus (ex: (a+)+b), peuvent forcer le moteur à explorer un nombre exponentiel de combinaisons avant d'échouer sur un texte qui ne correspond pas — bloquant l'application pendant plusieurs secondes voire minutes sur une simple chaîne de quelques dizaines de caractères.

Ce phénomène, appelé "catastrophic backtracking" ou ReDoS (Regular Expression Denial of Service), est une vraie préoccupation de sécurité si une regex utilisateur ou non maîtrisée est exécutée sur une entrée non fiable — toujours tester ses regex sur des entrées volontairement malveillantes avant un déploiement en production.

Où utilise-t-on des regex en administration IT ?

Utiliser le testeur de regex →

Erreurs courantes

Questions fréquentes

Quelle est la différence entre regex "greedy" et "lazy" ?

Par défaut, les quantificateurs (*, +) sont "greedy" : ils capturent le plus de texte possible. Ajouter un ? après (ex: *?) les rend "lazy" : ils capturent le moins de texte possible tout en validant le motif.

Les regex sont-elles les mêmes dans tous les langages ?

La syntaxe de base est très similaire (héritée de POSIX et Perl), mais des différences existent entre moteurs (JavaScript, Python, PCRE, Java) sur des fonctionnalités avancées comme les lookaheads/lookbehinds ou les noms de groupes.

Pourquoi ma regex ne trouve qu'une seule correspondance ?

Sans le drapeau g (global), le moteur s'arrête à la première correspondance trouvée — ajoute ce drapeau pour récupérer toutes les occurrences dans le texte.

Comment valider qu'une chaîne correspond entièrement à un motif (pas juste une partie) ?

Ancre le motif avec ^ au début et $ à la fin (ex: ^[a-z]+$), sinon la regex peut matcher seulement une sous-partie de la chaîne et donner un faux positif.

Outils similaires