Les expressions régulières (regex ou regexp) sont des outils puissants pour la correspondance de motifs dans les chaînes de caractères. Le module re
de Python offre des fonctionnalités robustes pour les opérations regex, les caractères génériques jouant un rôle crucial. Cet article explore comment utiliser efficacement les caractères génériques avec la fonction re.sub()
pour diverses tâches de manipulation de chaînes de caractères.
Table des matières
- Substitutions Regex de base avec caractères génériques
- Utilisation avancée des caractères génériques et quantificateurs
- Combinaison de caractères génériques pour des motifs complexes
- Exemples concrets : extraction d’adresses e-mail et de numéros de téléphone
- Conclusion
Substitutions Regex de base avec caractères génériques
La fonction re.sub()
est fondamentale pour les substitutions regex. Sa syntaxe est re.sub(pattern, replacement, string, count=0, flags=0)
. Le pattern
est une expression régulière, replacement
est la chaîne de substitution, string
est l’entrée, count
limite les substitutions, et flags
modifie le comportement de la correspondance. Les caractères génériques améliorent considérablement la flexibilité du pattern
.
Remplaçons toutes les voyelles d’une chaîne par « X » :
import re
text = "Hello, World!"
replaced_text = re.sub(r"[aeiou]", "X", text, flags=re.IGNORECASE)
print(f"Original: {text}")
print(f"Remplacé: {replaced_text}")
[aeiou]
est un ensemble de caractères génériques correspondant à n’importe quelle voyelle (insensible à la casse grâce à re.IGNORECASE
).
Utilisation avancée des caractères génériques et quantificateurs
re.sub()
prend en charge les caractères génériques complexes. Remplaçons les séquences d’un ou plusieurs chiffres par « NUMERO » :
import re
text = "Mon numéro de téléphone est 123-456-7890 et mon code postal est 90210."
replaced_text = re.sub(r"d+", "NUMERO", text)
print(f"Original: {text}")
print(f"Remplacé: {replaced_text}")
d+
correspond à un ou plusieurs chiffres (d
correspond à un chiffre, +
signifie une ou plusieurs répétitions).
Voici un tableau résumant les principaux caractères génériques :
Caractère générique | Description |
---|---|
. |
Correspond à n’importe quel caractère sauf le saut de ligne. |
* |
Correspond à zéro ou plusieurs occurrences de l’élément précédent. |
+ |
Correspond à une ou plusieurs occurrences de l’élément précédent. |
? |
Correspond à zéro ou une occurrence de l’élément précédent. |
[] |
Définit un ensemble de caractères (par exemple, [abc] ). |
[^] |
Définit un ensemble de caractères niés (par exemple, [^abc] ). |
() |
Crée un groupe de capture. |
|
Échappe les caractères spéciaux (par exemple, . correspond à un point littéral). |
Combinaison de caractères génériques pour des motifs complexes
La combinaison de caractères génériques crée des motifs puissants. Remplaçons les mots commençant par « a » suivis de n’importe quels caractères :
import re
text = "Une pomme par jour éloigne le médecin."
replaced_text = re.sub(r"aw*", "MOT", text, flags=re.IGNORECASE)
print(f"Original: {text}")
print(f"Remplacé: {replaced_text}")
aw*
correspond à « a » suivi de zéro ou plusieurs caractères alphanumériques (w
).
Exemples concrets : extraction d’adresses e-mail et de numéros de téléphone
re.sub()
excelle dans la gestion de motifs complexes. Remplaçons les adresses e-mail par « EMAIL » :
import re
text = "Contactez-nous à [email protected] ou [email protected]."
replaced_text = re.sub(r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}", "EMAIL", text)
print(f"Original: {text}")
print(f"Remplacé: {replaced_text}")
Cette expression régulière correspond à un format d’e-mail courant.
Conclusion
La fonction re.sub()
, combinée aux caractères génériques regex, offre une méthode flexible et efficace pour la manipulation de chaînes de caractères en Python. La maîtrise de ces techniques est précieuse pour les tâches de traitement de texte et de nettoyage de données. Une construction minutieuse des expressions régulières est cruciale pour éviter les remplacements inattendus. L’expérimentation et la compréhension des nuances des caractères génériques sont la clé d’une manipulation efficace des chaînes de caractères.