Aller au contenu

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.
python
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.

python
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.
python
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.

python
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.

python
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 ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.