Introduction
Les expressions régulières sont un outil puissant pour rechercher, filtrer, et manipuler des chaînes de caractères en Python. Le module re
permet d'exploiter ces motifs pour effectuer des tâches complexes comme la validation d'emails, l'extraction d'informations spécifiques, ou le remplacement de parties de texte. Maîtriser les expressions régulières vous permet de traiter les chaînes de caractères de manière efficace et flexible.
Dans cet article, nous allons explorer les fonctionnalités de base du module re
, y compris la recherche, le filtrage, la validation, et le remplacement de texte en utilisant les expressions régulières.
1. Importation et bases du module re
Pour commencer à travailler avec les expressions régulières, vous devez importer le module re
:
import re
Le module re
fournit plusieurs fonctions pour travailler avec des motifs de texte, telles que search()
, match()
, findall()
, et sub()
.
2. Syntaxe des expressions régulières de base
Voici quelques symboles de base utilisés pour écrire des expressions régulières :
.
: Correspond à n'importe quel caractère.^
: Indique le début d'une chaîne.$
: Indique la fin d'une chaîne.*
: Correspond à zéro ou plusieurs répétitions du caractère précédent.+
: Correspond à une ou plusieurs répétitions du caractère précédent.?
: Correspond à zéro ou une répétition du caractère précédent.[]
: Définit une classe de caractères (ex :[a-z]
pour toutes les lettres minuscules).|
: Opérateur OU (ex :a|b
correspond à "a" ou "b").
3. Recherche de motifs avec search()
La fonction re.search()
recherche un motif dans une chaîne. Elle renvoie le premier objet Match
trouvé ou None
si aucun motif ne correspond.
Exemple : Rechercher un mot dans une chaîne
import re
texte = "Bonjour, comment allez-vous ?"
motif = r"comment"
match = re.search(motif, texte)
if match:
print("Mot trouvé :", match.group()) # Affiche "Mot trouvé : comment"
else:
print("Mot non trouvé")
Ici, search()
trouve le mot "comment" dans le texte et renvoie l'objet Match
.
4. Vérifier le début d'une chaîne avec match()
La fonction re.match()
vérifie uniquement si le début de la chaîne correspond au motif. Elle renvoie un objet Match
si une correspondance est trouvée au début de la chaîne, ou None
sinon.
Exemple : Vérifier un format au début de la chaîne
import re
texte = "Python est génial"
motif = r"Python"
if re.match(motif, texte):
print("Le texte commence par 'Python'")
else:
print("Le texte ne commence pas par 'Python'")
5. Extraire toutes les correspondances avec findall()
La fonction re.findall()
renvoie une liste de toutes les occurrences du motif dans la chaîne, ce qui est utile pour extraire plusieurs éléments.
Exemple : Extraire tous les mots d'une chaîne
import re
texte = "Python est simple, Python est puissant"
motif = r"Python"
mots = re.findall(motif, texte)
print(mots) # Affiche ['Python', 'Python']
6. Remplacer du texte avec sub()
La fonction re.sub()
remplace toutes les occurrences d'un motif dans une chaîne par un texte donné.
Exemple : Remplacer toutes les occurrences d'un mot
import re
texte = "Python est cool, vraiment cool"
motif = r"cool"
nouveau_texte = re.sub(motif, "génial", texte)
print(nouveau_texte) # Affiche "Python est génial, vraiment génial"
7. Utiliser des groupes dans les expressions régulières
Les groupes, définis par des parenthèses ()
, permettent de capturer des parties spécifiques d’une correspondance. Ces groupes peuvent ensuite être récupérés pour une utilisation ultérieure.
Exemple : Extraire un numéro de téléphone
import re
texte = "Contactez-nous au 06-12345678."
motif = r"(\d{2})-(\d{8})"
match = re.search(motif, texte)
if match:
print("Préfixe :", match.group(1)) # Affiche "06"
print("Numéro :", match.group(2)) # Affiche "12345678"
Dans cet exemple, \d{2}
correspond à deux chiffres et \d{8}
à huit chiffres. Les parenthèses permettent de capturer ces parties pour les afficher séparément.
8. Utiliser des quantificateurs pour les répétitions
Les quantificateurs permettent de définir le nombre de répétitions souhaitées d'un motif :
{n}
: Exactement n répétitions.{n,}
: Au moins n répétitions.{,m}
: Au plus m répétitions.{n,m}
: Entre n et m répétitions.
Exemple : Valider une adresse email
import re
email = "exemple@test.com"
motif = r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"
if re.match(motif, email):
print("Adresse email valide")
else:
print("Adresse email non valide")
Ce motif vérifie la structure de l'adresse email, où :
[a-zA-Z0-9._%+-]+
: correspond au nom d’utilisateur (lettres, chiffres et symboles autorisés).@[a-zA-Z0-9.-]+
: correspond au domaine.\.[a-zA-Z]{2,}
: correspond à l'extension, qui doit avoir au moins 2 lettres.
9. Utiliser des drapeaux avec re
Les drapeaux permettent de modifier le comportement des expressions régulières :
re.IGNORECASE
oure.I
: Ignore la casse.re.MULTILINE
oure.M
: Considère chaque ligne d’une chaîne multilignes comme une nouvelle chaîne.re.DOTALL
oure.S
: Permet à.
de correspondre aux retours à la ligne.
Exemple : Recherche insensible à la casse
import re
texte = "Bonjour, BONJOUR, bonjour"
motif = r"bonjour"
resultats = re.findall(motif, texte, re.IGNORECASE)
print(resultats) # Affiche ['Bonjour', 'BONJOUR', 'bonjour']
10. Les expressions régulières avancées avec re.compile()
Vous pouvez compiler une expression régulière en utilisant re.compile()
pour la réutiliser plusieurs fois dans le code, ce qui améliore les performances.
Exemple : Compilation d’une expression régulière
import re
motif = re.compile(r"\d{4}-\d{2}-\d{2}")
texte = "La date est 2024-11-07."
if motif.search(texte):
print("Date trouvée :", motif.search(texte).group()) # Affiche "Date trouvée : 2024-11-07"
Conclusion
Le module re
en Python est un outil essentiel pour manipuler les chaînes de caractères à l’aide d’expressions régulières. Que ce soit pour la validation, la recherche, ou le remplacement, re
simplifie les tâches de manipulation de texte et vous permet de traiter des motifs complexes de manière élégante et concise. En maîtrisant ces techniques, vous pouvez gérer efficacement des tâches de filtrage et de nettoyage de données dans vos projets Python.