Référence Complète des Expressions Régulières (Multilingue & Multiligne)

Vue d’ensemble (What)

Cet article est une référence technique complète pour l’utilisation pratique et portable des expressions régulières. Il couvre la syntaxe de base, les correspondances multiligne, les techniques de remplacement, la compatibilité avec les outils, et les meilleures pratiques de conception.

Objectif (Why)

Les expressions régulières sont fondamentales pour la validation, l’analyse, la transformation et l’extraction de données textuelles. Elles sont utilisées dans tous les langages de programmation et sur toutes les plateformes, et leur bonne maîtrise permet une automatisation et un traitement de données efficaces.


Partie 1 : Syntaxe de base

Motif Signification Exemple Correspondances
. Tout caractère sauf retour à la ligne a.c abc, a-c
* Répétition 0 fois ou plus go*gle ggle, google
+ Répétition 1 fois ou plus go+gle gogle, google
? Optionnel (0 ou 1 fois) colou?r color, colour
{n} Exactement n répétitions a{3} aaa
{n,m} De n à m répétitions a{2,4} aa, aaa, aaaa
^ Début de ligne ^abc Ligne commençant par abc
$ Fin de ligne abc$ Ligne se terminant par abc
[] Un caractère parmi [abc] a, b, c
[^] Aucun des caractères listés [^0-9] Tout sauf chiffre
\d Chiffre \d+ 123, 007
\D Non-chiffre \D+ abc, XYZ
\w Caractère mot (alphanumérique + _) \w+ abc_123
\W Caractère non mot \W+ #@!, espaces
\s Espace, tab, saut de ligne \s+ Espace, tabulation, retour ligne
\S Caractère non blanc \S+ abc, 123
` ` OU logique `foo
() Regroupement (abc)+ abcabc
\b Limite de mot \bregex\b Mot exact regex

Partie 2 : Motifs pratiques (Multilingue)

Usage Expression Remarques
Chiffres uniquement ^\d+$ Nombre entier
Nombre décimal ^\d+\.\d+$ Avec un point
Alphanumérique ^[a-zA-Z0-9]+$ Identifiant
E-mail (simple) ^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,}$ Format commun
URL (http/https) https?://[\w.-]+\.[a-zA-Z]{2,}(/[\w./?=&%-]*)? Inclut chemins et requêtes
Date ISO \d{4}-\d{2}-\d{2} Format AAAA-MM-JJ
Téléphone international \+\d{1,3}[\s-]?\d{1,14} Ex : +33 6...
Nom d’utilisateur ^[a-zA-Z0-9._-]{3,20}$ Pour réseaux sociaux
Mot de passe fort ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$ Contient majuscule, minuscule, chiffre

Partie 3 : Correspondance multiligne

🔹 Pourquoi utiliser [\s\S]*? ?

Le point . ne correspond généralement pas aux retours à la ligne. Pour capturer plusieurs lignes, on utilise :

[\s\S]*?

Cela permet de capturer tous les caractères, y compris les sauts de ligne, de manière non-gourmande.

💡 Note : [\s\S\n]*? peut aussi être utilisé comme solution de repli.

🔹 Exemples communs

Cas d’usage Motif Remarques
Bloc de texte libre [\s\S]*? Capture sécurisée
Bloc <div> HTML <div[\s\S]*?</div> Jusqu’à la fermeture du bloc
Commentaires HTML <!--[\s\S]*?--> Bloc de commentaires
Bloc code Markdown "[\s\S]*?" Bloc entouré de backticks

Partie 4 : Techniques de remplacement

🔹 Syntaxe selon les outils

  • ${1}, ${2} (VSCode, .NET, Python)
  • $1, $2 (JavaScript, sed)

🔹 Exemples utiles

Tâche Motif Remplacement
Inverser deux mots (\w+)\s+(\w+) ${2} ${1}
Ajouter un span >([^<]+)< ><span>${1}</span><
CSV → JSON ^([^,]+),([^,]+),([^,]+)$ { "a": "${1}", "b": "${2}", "c": "${3}" }
Format date (\d{4})/(\d{2})/(\d{2}) ${1}-${2}-${3}
CamelCase → snake_case ([a-z])([A-Z]) ${1}_${2}

Partie 5 : Compatibilité par outil

Outil Multiligne Non-gourmand Remplacement Notes
VSCode ${1} [\s\S]*? ou [\s\S\n]*? recommandé
JavaScript ✅ (flag s) $1, $<name> Groupes nommés supportés
Python (re) ✅ (re.DOTALL) \g<1> ou \1 Préférer les chaînes raw r""
sed ❌ (ligne unique) \1, \2 Basique uniquement
grep/egrep Recherche uniquement, pas de remplacement

Partie 6 : Bonnes pratiques & antipatterns

✅ Recommandé

  • Utiliser [\s\S]*? pour support multiligne
  • Éviter .* au profit de non-gourmand
  • Utiliser (?:...) pour les groupes non capturants
  • Nommer les groupes si possible ((?<nom>\d{4}))
  • Documenter les regex complexes (re.VERBOSE)

❌ À éviter

Motif Problème
.* Risque de surcorrespondance (greedy)
[^a-z] Non compatible avec les caractères accentués
Analyse imbriquée HTML/XML imbriqués → regex inadapté
.+ Capture aussi des lignes vides

Conclusion

Ce guide est une référence robuste pour appliquer efficacement les expressions régulières sur plusieurs plateformes et langages.
Adoptez [\s\S]*? pour les correspondances multiligne, respectez la syntaxe propre à chaque outil, et concevez des patterns lisibles et maintenables.

Une expression régulière bien pensée est un outil puissant, fiable et réutilisable.

タイトルとURLをコピーしました