Les expressions régulières (regex)
Cherche des motifs complexes dans du texte avec le module re.
⏱ 14 minutes
📂 avance
#avance
#regex
#re
#texte
Les expressions régulières (regex)
Les regex sont un mini-langage pour décrire des motifs dans du texte. Super puissant pour chercher, valider, extraire des données.
Le module re
import re
texte = "Tel: 06 12 34 56 78. Code: AB-42."
print(re.findall(r"\d+", texte))
# ['06', '12', '34', '56', '78', '42']
Caractères spéciaux les plus utiles
| Motif | Signifie |
|---|---|
\d |
un chiffre (0-9) |
\w |
une lettre / chiffre / _ |
\s |
un espace, tab, retour ligne |
. |
n'importe quel caractère (sauf retour) |
[abc] |
un des caractères dans les crochets |
[a-z] |
une lettre minuscule |
[^abc] |
tout SAUF a, b, c |
Quantificateurs
| Motif | Signifie |
|---|---|
* |
0 ou plusieurs fois |
+ |
1 ou plusieurs fois |
? |
0 ou 1 fois |
{3} |
exactement 3 fois |
{2,5} |
entre 2 et 5 fois |
Ancres
| Motif | Signifie |
|---|---|
^ |
début de chaîne |
$ |
fin de chaîne |
\b |
frontière de mot |
Fonctions principales
import re
# 1. Trouver tous les matches
re.findall(r"\d+", "il y a 3 chats et 12 chiens")
# ['3', '12']
# 2. Tester si ça matche
if re.match(r"^[A-Za-z]+$", "Python"):
print("Que des lettres ✅")
# 3. Chercher le premier match
m = re.search(r"\d+", "j'ai 10 ans")
if m:
print(m.group()) # '10'
# 4. Remplacer
re.sub(r"\d+", "?", "il y a 3 chats")
# 'il y a ? chats'
# 5. Découper
re.split(r"[,;]\s*", "a, b; c,d")
# ['a', 'b', 'c', 'd']
Groupes de capture
Mets des parenthèses pour extraire des morceaux :
texte = "2026-05-17"
m = re.match(r"(\d{4})-(\d{2})-(\d{2})", texte)
if m:
annee, mois, jour = m.groups()
print(annee, mois, jour) # 2026 05 17
Astuces
- Toujours préfixer par
r:r"\d+"(sinon\dest interprété par Python). - Pour tester tes regex en live : https://regex101.com
- Si la regex devient illisible, c'est qu'elle est trop complexe — coupe-la.
Exemple : valider un email simple
def est_email(s):
return bool(re.fullmatch(r"[\w.-]+@[\w.-]+\.\w+", s))
print(est_email("zazac@example.com")) # True
print(est_email("pas un email")) # False
⚠ Pour de vraies validations (emails, numéros de téléphone…), utilise des bibliothèques dédiées : les regex parfaites sont très difficiles.
🧪 Quiz de validation
Réponds à toutes les questions. Il faut 70% de bonnes réponses pour valider le tuto !
🔒 Tu dois être connecté pour passer le quiz.