Exercice 48 / 100

Regex

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

📖 Cours

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 correspondancesre.match(motif, texte) → match seulement au début du textere.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, ou juste avant un \n final (pour exiger la toute fin : \Z)

Exemple : extraire les emails

import retexte = "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
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.

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