Du texte au motif.
Composez votre règle, observez ce qu’elle accepte, emportez-la dans votre langage.
Vos exemples valides
Génération guidéeLa structure de la ligne
Min./Max. comptent les caractères pour les classes ; les chiffres pour « Préfixe + chiffres ». Max. vide = illimité. Les champs facultatifs sont placés à la fin.
Expression finale
Lancez les tests pour voir les correspondances et les captures.
Chaque ligne est un cas distinct ; une ligne vide interne est testée, un saut de ligne final est ignoré. Les durées mesurent seulement le moteur JavaScript, pas les autres dialectes. Exécution isolée avec interruption après 1,5 seconde.
Le petit langage des motifs
Une regex décrit une famille de textes. Le moteur interprète le motif ; votre programme choisit s’il veut chercher, valider, extraire ou remplacer.
Six dialectes, un socle commun
| Moteur | Groupe nommé | Lookaround | Références arrière |
|---|---|---|---|
| Python | (?P<name>…) | Oui · contraintes au lookbehind | Oui |
| JavaScript | (?<name>…) | Oui · navigateurs modernes | Oui |
| PCRE2 | (?P<name>…) | Oui | Oui |
| .NET | (?<name>…) | Oui | Oui |
| Java | (?<name>…) | Oui | Oui |
| RE2 | (?P<name>…) | Non | Non |
Le générateur reste volontairement dans un sous-ensemble portable : classes ASCII, groupes, quantificateurs et séparateurs littéraux.
Un peu d’histoire
Stephen Kleene formalise les expressions régulières dans les années 1950, en lien avec les automates finis. Ken Thompson les introduit dans l’éditeur QED dans les années 1960 ; les outils Unix popularisent ensuite leur usage.
Les moteurs modernes ont ajouté des extensions. Certains utilisent le retour arrière (« backtracking »), d’autres des automates. Des répétitions imbriquées peuvent être très coûteuses avec un moteur à backtracking.
Bonnes pratiques
Écrire un contrat explicite
Définissez caractères permis, longueur, champs facultatifs et traitement des espaces. Une regex vérifie la forme d’une date, pas son existence dans le calendrier.
Éviter les captures trop larges
.* accepte presque tout. Pour un champ séparé par point-virgule, [^;]+ exprime plus précisément l’intention.
Tester les frontières
Ajoutez des cas trop courts, trop longs, vides, accentués, mal séparés et avec du texte inattendu. Une bonne suite inclut des contre-exemples.
Comprendre les ancres
^ et $ dépendent des options et du moteur. Les exports de validation utilisent des ancres strictes adaptées ; Python et Java utilisent aussi leurs fonctions de correspondance complète.
Ne pas confondre export et exécution
Un export traduit la syntaxe portable. Un aperçu JavaScript n’est pas une certification du comportement des autres moteurs. Les motifs manuels avancés peuvent ne pas être simulables.