Curious TechieDev Toolbox
Tous les Guides/Traitement de Texte8 min read

Qu’est-ce qu’une Expression Régulière (Regex) ?

Moteurs à automates finis, quantificateurs, assertions lookahead et neutralisation des attaques ReDoS.

Points Clés
  • Les expressions régulières modélisent des motifs de recherche interprétés par des automates finis.
  • Elles reposent sur des classes de caractères, quantificateurs et ancres de position.
  • Le Backtracking Catastrophique (ReDoS) peut saturer les serveurs face à des entrées malveillantes.
  • Les assertions Lookaround valident des conditions de longueur nulle sans consommer la chaîne.

Les expressions régulières (Regex) fournissent une notation algébrique concise pour rechercher, valider et extraire des motifs textuels complexes dans des flux de données.

1. Fondements de la Grammaire Regex

Les motifs évaluent les caractères de manière littérale (ex. : abc) ou via des métacaractères représentant des classes spécifiques :

  • \d : N’importe quel chiffre (0-9).
  • \w : Tout caractère de mot (lettres, chiffres, souligné).
  • \s : Tout espace blanc (espace, tabulation, saut de ligne).
  • [a-z0-9] : Ensembles de caractères personnalisés.

2. Quantificateurs Gourmands vs Paresseux

Par défaut, les quantificateurs * et + sont gourmands (greedy) : ils capturent la plus longue séquence possible. L’ajout d’un point d’interrogation (*? ou +?) les rend paresseux (lazy), ciblant la plus courte sous-chaîne.

3. Assertions Lookahead et Lookbehind

Les assertions à largeur zéro vérifient la présence de motifs sans consommer de caractères :

  • (?=...) Lookahead Positif : Correspond si le motif est suivi de l’expression.
  • (?!...) Lookahead Négatif : Correspond si le motif N’est PAS suivi de l’expression.
  • (?<=...) Lookbehind Positif : Correspond si le motif est précédé de l’expression.
  • (?<!...) Lookbehind Négatif : Correspond si le motif N’est PAS précédé de l’expression.

4. Prévention du Backtracking Catastrophique (ReDoS)

Face à des quantificateurs imbriqués (comme ([a-zA-Z]+)+$) et un texte non correspondant, un moteur à rétroaction explore un nombre exponentiel de combinaisons (O(2^n)), provoquant un déni de service (ReDoS).