Expressions régulières Python
Les expressions régulières (regex) sont un outil puissant pour le traitement de texte en Python. Elles vous permettent de rechercher, de remplacer et d'extraire des motifs dans du texte de manière efficace. Ce guide couvre la syntaxe de base des expressions régulières et les fonctions les plus couramment utilisées dans le module re de Python.
Syntaxe de base
Les expressions régulières combinent des métacaractères et des caractères littéraux. Les métacaractères ont des significations spéciales. Par exemple, le point (.) correspond à n'importe quel caractère sauf un saut de ligne, tandis que l'astérisque (*) correspond à zéro ou plusieurs occurrences du caractère précédent. Les caractères littéraux correspondent exactement à eux-mêmes. Par exemple, le motif hello correspond à la chaîne "hello".
Note sur les chaînes brutes : Les motifs de regex sont généralement écrits sous forme de chaînes brutes (préfixées par r, par ex. r'\d+'). Cela indique à Python de ne pas interpréter les antislashes comme des caractères d'échappement, ce qui est essentiel pour la syntaxe regex comme \d, \w ou \s.
Quantificateurs
Les quantificateurs spécifient combien de fois un motif doit correspondre. Les quantificateurs les plus couramment utilisés sont :
*correspond à zéro ou plusieurs occurrences du caractère ou du groupe précédent.+correspond à une ou plusieurs occurrences du caractère ou du groupe précédent.?correspond à zéro ou une occurrence du caractère ou du groupe précédent.{}spécifie un nombre exact ou une plage d'occurrences du caractère ou du groupe précédent.
import re
print(re.findall(r'a*', 'baaa')) # ['', 'aaa', '']
print(re.findall(r'a+', 'baaa')) # ['aaaa']
print(re.findall(r'a?', 'baaa')) # ['', 'a', 'a', 'a', '']
print(re.findall(r'a{3}', 'baaa')) # ['aaa']Classes de caractères
Les classes de caractères correspondent à n'importe quel caractère d'un ensemble spécifié. Par exemple, [aeiou] correspond à n'importe quelle voyelle, et [0-9] correspond à n'importe quel chiffre.
import re
print(re.findall(r'[aeiou]', 'hello')) # ['e', 'o']
print(re.findall(r'[0-9]', 'a1b2c3')) # ['1', '2', '3']Ancres
Les ancres spécifient la position d'un motif dans le texte. Les ancres les plus couramment utilisées sont :
^correspond au début d'une chaîne.$correspond à la fin d'une chaîne.
import re
print(re.findall(r'^Python', 'Python is great')) # ['Python']
print(re.findall(r'great$', 'Python is great')) # ['great']Groupes
Les groupes capturent des sous-motifs pour une extraction ultérieure. Vous pouvez les utiliser pour extraire des parties spécifiques d'une chaîne. Par exemple, le motif (\d+)-(\d+)-(\d+) correspond à une date au format AAAA-MM-JJ et capture l'année, le mois et le jour.
import re
match = re.search(r'(\d{4})-(\d{2})-(\d{2})', '2023-10-05')
if match:
print(match.groups()) # ('2023', '10', '05')Le module re
Le module re fournit des fonctions pour travailler avec les expressions régulières en Python. Les fonctions les plus couramment utilisées sont :
re.search()recherche un motif et renvoie le premier objet de correspondance.re.findall()recherche toutes les occurrences et renvoie une liste de correspondances.re.sub()remplace toutes les occurrences d'un motif par une chaîne spécifiée.re.split()divise une chaîne en fonction des occurrences d'un motif.
Vous pouvez également modifier le comportement de correspondance à l'aide de drapeaux. Par exemple, re.IGNORECASE rend le motif insensible à la casse.
import re
text = 'apple banana apple'
print(re.search(r'banana', text)) # <re.Match object; span=(6, 12), match='banana'>
print(re.findall(r'apple', text)) # ['apple', 'apple']
print(re.sub(r'apple', 'orange', text)) # 'orange banana orange'
print(re.split(r'\s+', 'one two three')) # ['one', 'two', 'three']
print(re.findall(r'python', 'Python is great', re.IGNORECASE)) # ['Python']Conclusion
Les expressions régulières sont un outil puissant pour le traitement de texte en Python. Combinées au module re, elles vous permettent de gérer efficacement des tâches complexes de manipulation de texte. Ce guide a couvert la syntaxe de base et les fonctions essentielles pour vous aider à démarrer.
Practice
Quelle est la fonction du module 're' en Python ?