Accueil
  • #développement
  • #regex
  • #outils

Regex : guide pratique avec exemples à tester

Par · · 3 min de lecture

Une expression régulière se lit mal, s’écrit encore plus mal, et pourtant elle fait gagner un temps considérable dès qu’il faut repérer, extraire ou remplacer du texte. Voici les briques à connaître, une série d’exemples que vous pouvez adapter, et les deux pièges qui font perdre le plus de temps : les répétitions gloutonnes et le retour arrière catastrophique.

Les briques de base d’une regex#

Une regex décrit un motif, caractère par caractère. Les éléments à retenir tiennent en quelques lignes :

  • \d un chiffre, \s un espace (ou une tabulation, un retour à la ligne), \w une lettre sans accent, un chiffre ou _. Les versions en majuscules (\D, \S, \W) disent le contraire.
  • [abc] un caractère parmi a, b ou c ; [a-z] une plage ; [^abc] tout sauf a, b et c.
  • . n’importe quel caractère, sauf un retour à la ligne.
  • ^ et $ le début et la fin du texte, \b la limite d’un mot.
  • * zéro ou plus, + un ou plus, ? zéro ou un, {3} exactement trois, {2,5} de deux à cinq.

Attention au français : \w ne connaît pas les accents. Sur « un été chaud », \w+ trouve « un », « t » et « chaud ». Pour des lettres accentuées, utilisez \p{L} avec le drapeau u. Pour la même raison, \bété\b ne trouve rien dans ce texte : \b s’appuie lui aussi sur \w.

Groupes, alternatives et groupes nommés#

Les parenthèses regroupent et capturent. (abc) capture ce qu’il trouve et le rend disponible sous $1, $2… ; (?:abc) regroupe sans capturer ; a|b signifie « a ou b » ; (?<nom>abc) donne un nom au groupe. Les groupes nommés rendent les remplacements lisibles :

Motif       : (?<annee>\d{4})-(?<mois>\d{2})-(?<jour>\d{2})
Remplacer   : $<jour>/$<mois>/$<annee>
2026-10-02  → 02/10/2026

Les drapeaux qui changent le résultat#

Les drapeaux se placent après le motif. g cherche toutes les correspondances, sinon seule la première est trouvée. i ignore la casse. m fait valoir ^ et $ pour chaque ligne. s laisse le point traverser les retours à la ligne. u active Unicode, et y impose que chaque correspondance commence exactement là où la précédente s’est arrêtée. Un motif qui « ne trouve qu’une seule occurrence » a presque toujours perdu son g.

Glouton ou paresseux : le piège classique#

Un quantificateur prend le plus de caractères possible, c’est ce qu’on appelle être glouton. Le résultat surprend sur des guillemets :

Texte     : Il a dit "oui" puis "non".
".*"      → "oui" puis "non"     (une seule correspondance)
".*?"     → "oui" et "non"       (deux correspondances)
"[^"]*"   → "oui" et "non"       (deux correspondances)

Ajouter ? après le quantificateur le rend paresseux : il s’arrête dès que possible. Une classe négative comme [^"]* est souvent plus sûre encore, parce qu’elle dit exactement ce qu’on accepte.

Quelques motifs utiles#

  • Code postal français : \b\d{5}\b
  • Heure sur 24 heures : \b([01]\d|2[0-3]):[0-5]\d\b
  • Espaces multiples, à remplacer par un seul espace : \s{2,}
  • Nombre précédé d’un symbole euro, sans le symbole : (?<=€)\d+
  • Adresse e-mail, version approximative : [\w.+-]+@[\w-]+\.[\w.-]+

Ce dernier motif repère des adresses plausibles, il ne les valide pas : la syntaxe réelle est bien plus large, et seul un message de confirmation prouve qu’une adresse existe.

Le retour arrière catastrophique#

Un motif comme (a+)+$ répète une répétition. Sur une longue suite de « a » suivie d’un caractère qui fait échouer la fin, le moteur essaie une à une toutes les façons de découper la suite, et le temps de calcul double à peu près à chaque caractère ajouté. Une telle regex peut figer un programme. Pour l’éviter : pas de quantificateurs imbriqués, des alternatives qui ne se chevauchent pas, des classes précises plutôt que .*.

Tester dans le navigateur#

Le testeur d’expressions régulières utilise le moteur JavaScript de votre navigateur : le résultat est celui que vous obtiendrez dans votre code JavaScript, mais pas forcément dans PCRE, Python ou Java.

  1. Saisissez le motif dans « Expression régulière », sans les barres obliques de début et de fin.
  2. Cochez les drapeaux voulus dans « Drapeaux ».
  3. Collez votre texte dans « Texte à tester » : les correspondances sont surlignées et listées avec leur index et leurs groupes.
  4. Cochez « Remplacer les correspondances » pour prévisualiser un remplacement avec $1 ou $<nom>.

Un motif invalide affiche le message d’erreur du navigateur. Un motif trop lent est interrompu après 1,5 seconde, sans bloquer la page. Tout reste dans votre navigateur. Et si votre besoin se limite à trier, dédoublonner ou nettoyer des lignes, les outils de lignes évitent d’écrire une regex.

Outils utilisés dans cet article

  • Outils de lignes

    Triez, dédoublonnez, inversez et numérotez les lignes d’un texte.

  • Testeur de regex

    Testez une expression régulière avec groupes et remplacement.

À lire aussi