🐍 PyTutos

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 \d est 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.