Exercice 48 / 100

Regex

Extrais tous les emails du texte `"Contact alice@beauvoir.co ou bob@data.fr pour plus d'info"` avec un regex

Une expression régulière (regex) est un mini-langage pour décrire des motifs de texte. Le module standard re permet de chercher, valider, extraire et remplacer.

Import

import re

Les 4 fonctions principales

re.search(motif, texte) → trouve la PREMIÈRE correspondance (ou None) re.findall(motif, texte) → liste de TOUTES les correspondances re.match(motif, texte) → match seulement au début du texte re.sub(motif, remplacement, texte) → remplacement

Métacaractères de base

. n'importe quel caractère (sauf newline) \d un chiffre (0-9) \w lettre, chiffre ou _ \s espace (espace, tab, newline) \D \W \S l'inverse (majuscules) [abc] un caractère parmi a, b, c [a-z] un caractère entre a et z [^abc] tout SAUF a, b, c

Quantificateurs

* 0 ou plus + 1 ou plus ? 0 ou 1 {n} exactement n {n,m} entre n et m

Ancres

^ début de la chaîne $ fin de la chaîne

Exemple : extraire les emails

import re texte = "Contact alice@beauvoir.co ou bob@data.fr pour plus d'info" motif = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}' emails = re.findall(motif, texte) print(emails) # → ['alice@beauvoir.co', 'bob@data.fr']

Décomposition du motif :

[a-zA-Z0-9._%+-]+ 1 ou plus caractères autorisés avant le @ @ le @ littéral [a-zA-Z0-9.-]+ le nom de domaine \. un point littéral (échappé) [a-zA-Z]{2,} extension de 2 lettres minimum
Une expression régulière se lit morceau par morceau : chaque bout du motif attrape le bout d'adresse qui lui correspond, du nom jusqu'à l'extension

Préfixe ta regex par r'...' (raw string) sinon Python interprète les \ et tu galères avec les double échappements.

Outils pour tester tes regex : regex101.com, pythex.org. Indispensable pour débugger les motifs complexes.

exercise.py

Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →