Pourquoi Regex vaut la peine d'être appris
Une expression régulière bien conçue peut remplacer 50 lignes de code d’analyse manuelle de chaînes. Il s'exécute en microsecondes. Cela fonctionne dans pratiquement tous les langages de programmation. Et une fois que vous avez compris la syntaxe, vous pouvez écrire des modèles dont la mise en œuvre prendrait des heures avec une logique conditionnelle.
La barrière, ce ne sont pas les concepts, c'est la notation. Regex utilise une syntaxe dense et riche en symboles qui ressemble à du charabia à première vue. Une fois que vous aurez appris à le lire, vous verrez des modèles dans le code, les données et le texte que vous ne pouviez pas voir auparavant.
Référence rapide des modèles essentiels
| Modèle | Matchs | Exemple |
|---|---|---|
\d | N'importe quel chiffre de 0 à 9 | \d{4} → 2025 |
\w | Lettre, chiffre ou trait de soulignement | \w+→ "bonjour_monde" |
\s | N'importe quel espace | \s+→ un ou plusieurs espaces |
^ / $ | Début/fin de chaîne | ^\d{5}$→ exactement un code postal à 5 chiffres |
[abc] | L'un des : a, b ou c | [aeiou]→ n'importe quelle voyelle |
[^abc] | Tout sauf a, b, c | [^\d]→ non-chiffre |
? | 0 ou 1 des précédents | couleur→ couleur OU couleur |
+ | 1 ou plus | \d+→ un ou plusieurs chiffres |
* | 0 ou plus | \d*→ zéro ou plusieurs chiffres |
{n,m} | Entre n et m fois | \d{3,5}→ 3 à 5 chiffres |
Modèles qui valent la peine d’être mis en signet
- E-mail:
/^[\w.+-]+@[\w-]+\.[a-z]{2,}$/i - Extraction d'URL :
/https?:\/\/[^\s"'<>]+/g - Supprimez les espaces supplémentaires :
/\s+/g→ remplacer par un seul espace - Extraire les hashtags :
/#[\w]+/g - Faire correspondre le mot entier uniquement :
/\bmot\b/
gdrapeau pour trouver toutes les correspondances (pas seulement la première),jepour une correspondance insensible à la casse, etmfaire^et$faire correspondre les limites de ligne au lieu des limites de chaîne. La plupart des modèles d'expressions régulières du monde réel nécessitent au moinsgouje.Qu’est-ce qu’un « retour en arrière catastrophique » ?
Des modèles comme(une+)+appliqué à une longue chaîne sans correspondance entraîne un temps de traitement exponentiel - votre moteur d'expression régulière se retrouve bloqué en essayant de manière exponentielle plus de combinaisons. Évitez les quantificateurs imbriqués sur des modèles qui se chevauchent. Le modèle(une+)+bsur "aaaaaaaaaaaaaaac", un serveur se bloque.
L'expression régulière JavaScript fonctionne-t-elle de la même manière que Python ?
Généralement oui, avec des différences dans les groupes nommés (JS utilise(?<nom>), Python utilise(?P<nom>)), certaines capacités d'anticipation/recherche et la notation de classe de caractères. Ce testeur utilise le moteur JavaScript : testez dans votre langue cible si le comportement diffère.