Comment utiliser les expressions régulières (Regex) en Python

Maîtrisez les expressions régulières Python à l'aide du module re intégré. Apprenez la correspondance de chaînes, la recherche de modèles, la recherche de toutes les occurrences et le remplacement de texte.

Essayez cette solution dans l'éditeur

Aperçu

Les expressions régulières, communément appelées regex, sont des modèles puissants utilisés pour faire correspondre, rechercher et manipuler des chaînes de texte en fonction de modèles spécifiques. Regex est largement utilisé pour la vérification des e-mails, la validation des numéros de téléphone, le scraping Web, l'analyse des journaux et les tâches de recherche et de remplacement de texte. Python fournit des capacités complètes d'expression régulière via le module `re` intégré.

Le module `re` propose plusieurs fonctions principales en fonction de votre objectif. La fonction `re.search(pattern, string)` analyse une chaîne et renvoie un objet de correspondance pour la première occurrence du modèle. La fonction `re.match(pattern, string)` est similaire mais recherche uniquement à partir du tout début de la chaîne. Si vous souhaitez récupérer toutes les instances d'un modèle dans un bloc de texte, `re.findall(pattern, string)` les renvoie sous forme de liste de chaînes.

Les modèles Regex utilisent des métacaractères spéciaux comme `\d` pour les chiffres, `\w` pour les caractères alphanumériques, `+` pour une ou plusieurs occurrences et `*` pour zéro ou plusieurs. Lors de l'écriture d'une expression régulière en Python, il est courant d'utiliser des littéraux de chaîne bruts (préfixés par « r », tels que « r"\d+"`) pour empêcher Python de traiter les barres obliques inverses comme des séquences d'échappement.

Sortie de code et d'exécution

Ce script montre la validation des structures de format, l'extraction de jetons numériques et le remplacement des modèles correspondants à l'aide du module re.

import re

# 1. Searching for a pattern in text
log_message = "ERROR: Connection timeout at 04:30:15 on port 8080"
pattern_port = r"port \d+"

match = re.search(pattern_port, log_message)
if match:
    print("Found port pattern:", match.group())

# 2. Extracting all email addresses from a block of text
text = "Contact sales@pyrun.xyz or support@example.com for help."
pattern_email = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"

emails = re.findall(pattern_email, text)
print("Extracted emails:", emails)

# 3. Replacing patterns using re.sub
date_string = "2026/05/25"
# Replace slashes with dashes
clean_date = re.sub(r"/", "-", date_string)
print("Replaced Date:", clean_date)
Sortie terminale
Found port pattern: port 8080
Extracted emails: ['sales@pyrun.xyz', 'support@example.com']
Replaced Date: 2026-05-25

Mise en œuvre étape par étape

  • Importez le module re intégré.
  • Définissez des modèles de recherche d'expressions régulières à l'aide de chaînes brutes, comme r"\d+" pour éviter les problèmes de séquence d'échappement.
  • Utilisez re.search() pour trouver la première occurrence ou re.findall() pour collecter toutes les sous-chaînes correspondantes.
  • Utilisez re.sub(pattern, replacement, string) pour effectuer des remplacements basés sur des modèles dans le texte.

Foire aux questions

Quel est l'avantage d'utiliser des chaînes brutes (r"...") pour les modèles d'expressions régulières ?

Les chaînes brutes traitent les barres obliques inverses comme des caractères littéraux plutôt que comme des caractères d'échappement. Par exemple, r"\n" représente une barre oblique inverse suivie d'un "n", tandis que "\n" représente un caractère de nouvelle ligne.

Comment puis-je vérifier si une correspondance d’expression régulière a réussi ?

re.search() et re.match() renvoient un objet de correspondance en cas de succès, ou None si aucune correspondance n'est trouvée. Vous devez vérifier le résultat à l'aide d'une instruction conditionnelle (par exemple, if match :).

Sujets connexes

Ressources Python recommandées

Développez vos connaissances avec des didacticiels interactifs, des aide-mémoire et des comparaisons de codes associés.