Aide-mémoire des expressions régulières et motifs courants
Les expressions régulières, ou regex, sont des outils de recherche de motifs puissants utilisés dans presque tous les langages de programmation et éditeurs de texte. Bien que la syntaxe puisse sembler obscure au premier abord, la maîtrise des expressions régulières vous permet de rechercher, valider, extraire et transformer du texte de manière précise, des opérations qui pourraient nécessiter des dizaines de lignes de code procédural. Ce guide couvre la syntaxe de base, les motifs courants et les techniques pratiques que vous devez connaître.
Aide-mémoire de la syntaxe de base des expressions régulières
Classes de caractères
| Motif | Signification | Exemple |
|---|---|---|
| . | Tout caractère sauf le saut de ligne | a.c correspond à abc, a1c, a c |
| \d | Tout chiffre (0-9) | \d\d correspond à 42 |
| \D | Tout caractère non numérique | \D correspond à a, !, espace |
| \w | Caractère de mot (a-z, A-Z, 0-9, _) | \w+ correspond à hello_123 |
| \W | Caractère non mot | \W correspond à @, #, espace |
| \s | Caractère d'espacement (espace, tabulation, saut de ligne) | a\sb correspond à a b |
| \S | Caractère non blanc | \S+ correspond à hello |
| [abc] | Tout caractère de l'ensemble | [aeiou] correspond à une voyelle |
| [^abc] | Tout caractère hors de l'ensemble | [^0-9] correspond à un non-chiffre |
| [a-z] | Plage de caractères | [A-Za-z] correspond à toute lettre |
Quantificateurs
| Motif | Signification | Exemple |
|---|---|---|
| * | Zéro ou plusieurs fois | ab*c correspond à ac, abc, abbc |
| + | Une ou plusieurs fois | ab+c correspond à abc, abbc |
| ? | Zéro ou une fois | colou?r correspond à color, colour |
| {n} | Exactement n fois | \d{4} correspond à un nombre à 4 chiffres |
| {n,} | n fois ou plus | \d{2,} correspond à 2 chiffres ou plus |
| {n,m} | Entre n et m fois | \d{3,5} correspond à 3 à 5 chiffres |
Ancres et limites
| Motif | Signification | Exemple |
|---|---|---|
| ^ | Début de chaîne ou de ligne | ^Hello correspond à Hello en début de chaîne |
| $ | Fin de chaîne ou de ligne | world$ correspond à world en fin de chaîne |
| \b | Limite de mot | \bcat\b correspond à cat isolé |
| \B | Non-limite de mot | \Bcat correspond à scattered |
Groupes et alternance
| Motif | Signification | Exemple |
|---|---|---|
| (abc) | Groupe capturant | (ab)+ correspond à abab |
| (?:abc) | Groupe non capturant | (?:ab)+ correspond à abab |
| a|b | Alternance (ou) | cat|dog correspond à cat ou dog |
| \1 | Référence arrière au groupe 1 | (\w)\1 correspond à aa, bb |
| Groupe capturant nommé | Référencé par name |
Motifs d'expressions régulières courants
Voici les motifs d'expressions régulières les plus couramment utilisés dans le développement Web et la validation de données :
Validation d'e-mail
Une expression régulière pratique pour les adresses e-mail qui capture la plupart des adresses invalides sans être trop stricte : ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ . Ce motif valide la structure de base d'un e-mail tout en autorisant les caractères courants dans la partie locale et en exigeant un domaine valide avec un TLD d'au moins deux caractères.
Validation d'URL
Correspond aux URL HTTP et HTTPS : ^https?:\/\/(www\.)?[a-zA-Z0-9-]+\.[a-zA-Z]{2,}(\/[^\s]*)?$ . Ce motif correspond aux URL avec un préfixe www facultatif, un domaine et un chemin optionnel.
Numéro de téléphone (États-Unis)
Divers formats de numéros de téléphone américains : ^\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}$ . Ce motif gère des formats comme (555) 123-4567, 555-123-4567 et 5551234567.
Adresse IP (IPv4)
Validation d'adresses IPv4 : ^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$ . Ce motif garantit que chaque octet est entre 0 et 255.
Date (YYYY-MM-DD)
Format de date ISO : ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$ . Ce motif valide la structure du format mais ne vérifie pas la validité des dates de chaque mois.
Code couleur hexadécimal
Correspond aux codes couleur hexadécimaux CSS : ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ . Ce motif correspond aux formats abrégés à 3 chiffres (#fff) et complets à 6 chiffres (#ffffff).
Techniques avancées
Lookahead et lookbehind
Les assertions lookahead et lookbehind vous permettent de faire correspondre un motif uniquement si un autre motif suit (ou précède), sans inclure le texte environnant dans le résultat de la correspondance.
- Lookahead positif (?=motif) : correspond uniquement si le motif suit. Exemple : \d(?=px) correspond uniquement aux chiffres précédant « px ».
- Lookahead négatif (?!motif) : correspond uniquement si le motif ne suit pas. Exemple : \d(?!px) correspond aux chiffres ne précédant pas « px ».
- <=motif) : correspond uniquement si le motif précède. Exemple : (?<=\$)\d+ correspond aux chiffres après un symbole dollar.
Correspondance gourmande vs paresseuse
<.*>bold<.*?> ».
Conseils de performance pour les expressions régulières
- Utilisez des groupes non capturants (?:) lorsque vous n'avez pas besoin d'extraire le contenu du groupe
- Utilisez des quantificateurs possessifs ou des groupes atomiques lorsque c'est disponible pour éviter les rétroactions excessives
- Utilisez des classes de caractères spécifiques plutôt qu'une utilisation généralisée du métacaractère point
- Ancrez vos motifs avec ^ et $ lorsque vous devez correspondre à la chaîne entière
- Précompilez vos motifs d'expression régulière lorsqu'ils sont réutilisés dans une boucle
- Utilisez les limites de mots \b au lieu de ^ et $ lors de la recherche dans du texte plus long
Tester et déboguer des expressions régulières
Avant de déployer un motif d'expression régulière, testez-le toujours avec des entrées réelles. Utilisez un testeur d'expressions régulières interactif qui met en évidence les correspondances en temps réel et explique chaque partie du motif. Cela vous aide à détecter les cas limites et à comprendre pourquoi un motif correspond ou non à une entrée spécifique. Essayez notre testeur d'expressions régulières gratuit pour construire et tester vos motifs de manière interactive.
Utilisez nos outils gratuits pour construire, tester et déboguer vos motifs d'expressions régulières.
Essayez le testeur d'expressions régulièresAide-mémoire des expressions régulièresQuestions fréquentes
Quelle est la différence entre les correspondances gourmandes et paresseuses ?
Les quantificateurs gourmands correspondent à autant de texte que possible, tandis que les quantificateurs paresseux correspondent à aussi peu de texte que possible. Ajouter un point d'interrogation après un quantificateur le rend paresseux. Par exemple, .* correspond à la chaîne la plus longue possible, tandis que .*? correspond à la plus courte.
Les expressions régulières sont-elles identiques dans tous les langages de programmation ?
Non, les implémentations d'expressions régulières varient selon les langages. La plupart prennent en charge la syntaxe POSIX de base, mais les fonctionnalités avancées comme le lookbehind, les groupes nommés et le support Unicode varient. JavaScript avait historiquement un support limité pour les expressions régulières, mais de nombreuses fonctionnalités ont été ajoutées ces dernières années.
Les expressions régulières peuvent-elles analyser du HTML ou XML ?
Non, les expressions régulières ne peuvent pas analyser de manière fiable du HTML ou XML car ce sont des langages contextuels imbriqués. Les expressions régulières n'ont pas de notion de profondeur d'imbrication ou de balises équilibrées. Utilisez un analyseur HTML ou XML approprié. Les expressions régulières peuvent extraire des motifs simples du HTML mais échoueront sur des structures complexes.
Que sont le lookahead et le lookbehind dans les expressions régulières ?
<=motif) est un lookbehind positif, il correspond si le motif précède. Les versions négatives utilisent ! au lieu de =.
Comment rendre une expression régulière insensible à la casse ?
Ajoutez l'indicateur i après le délimiteur de fermeture pour rendre l'ensemble du motif insensible à la casse. En JavaScript, utilisez /pattern/i. En Python, utilisez re.IGNORECASE ou re.I comme indicateur. Vous pouvez également utiliser (?i) en ligne pour rendre des parties spécifiques insensibles à la casse.
ToolHub's collection of 300+ free online tools including regex tester, cheat sheets, and more — no sign-up required.