Exercice 91 / 100

Regex en Python

Utilise les regex pour extraire les emails du texte `'Contact: alice@email.com ou bob.martin@company.fr'` puis valide un format de numéro de téléphone

re est le module de regex (regular expressions) de Python. On l'utilise pour chercher, extraire, valider et remplacer du texte.

Import

import re

Les 4 fonctions principales

re.search(motif, texte) première occurrence (ou None) re.findall(motif, texte) toutes les occurrences (liste) re.match(motif, texte) uniquement au début re.sub(motif, remp, texte) remplacement re.split(motif, texte) découpe selon le motif
Le motif ne change pas, la fonction si : search rend la première occurrence, findall les rend toutes, sub remplace ce qui correspond, et split découpe le texte dessus

Les raw strings

Toujours préfixer la regex par r'...' pour éviter les double échappements :

r'\d{4}' ✅ '\\d{4}' ⚠ équivalent mais illisible

Métacaractères essentiels

\d chiffre [0-9] \w alphanumérique + _ \s espace (espace, tab, newline) . n'importe quel caractère (sauf newline) [] classe (ex [a-z], [^abc] = pas a/b/c)

Quantificateurs

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

Ancres

^ début $ fin

Exemples : extraire emails, dates, téléphones

import re
texte = 'Contact: alice@email.com ou bob.martin@company.fr' emails = re.findall(r'[\w.]+@[\w.]+', texte) print(emails) # ['alice@email.com', 'bob.martin@company.fr']
date_str = 'Née le 15/03/1990, diplômée le 20/06/2015' dates = re.findall(r'\d{2}/\d{2}/\d{4}', date_str) print(dates) # ['15/03/1990', '20/06/2015']
tel = 'Appelez le 06 12 34 56 78 ou le 01-23-45-67-89' nums = re.findall(r'[\d][\d\s-]{8,}[\d]', tel) print(nums)

re.sub : nettoyage

clean = re.sub(r'\s+', ' ', " trop d'espaces ici ") print(clean.strip()) # "trop d'espaces ici"

Remplace toutes les séquences d'espaces multiples par un seul espace.

Groupes capturés

Les ( ) capturent une partie du match :

m = re.search(r'(\d{2})/(\d{2})/(\d{4})', '15/03/1990') m.group(0) # '15/03/1990' (match complet) m.group(1) # '15' m.group(2) # '03' m.group(3) # '1990'

Outils : regex101.com et pythex.org pour tester tes motifs interactivement. Indispensables.

exercise.py

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