Python Regex : correspondance de modèles avec le module re

Maîtrisez les expressions régulières (Regex) en Python. Apprenez à rechercher, faire correspondre, diviser et remplacer des données de chaîne à l'aide de la bibliothèque re intégrée.

Essayez dans l'éditeur

Aperçu

Les expressions régulières (souvent abrégées en regex) sont un mini-langage utilisé pour la recherche de texte avancée, la correspondance de chaînes et la manipulation. Au lieu de vérifier des valeurs de chaîne simples, les expressions régulières vous permettent de définir des modèles complexes à rechercher dans des corps de texte volumineux. Par exemple, trouver toutes les adresses e-mail, numéros de téléphone ou URL dans un document est simple à exprimer en regex, mais incroyablement complexe à écrire à l'aide de méthodes de chaîne normales.

Python fournit une prise en charge intégrée des expressions régulières via le module `re`. Le module comprend des fonctions critiques telles que `re.search()` pour trouver la première correspondance, `re.findall()` pour récupérer toutes les sous-chaînes correspondantes sous forme de liste et `re.finditer()` pour parcourir les objets de correspondance. Chaque objet de correspondance fournit des métadonnées, telles que l'index exact des positions de début et de fin de la sous-chaîne correspondante, ainsi que le texte correspondant lui-même.

Les modèles Regex utilisent des métacaractères spéciaux : `\d` correspond à n'importe quel chiffre, `\w` correspond à des caractères alphanumériques, `+` correspond à une ou plusieurs répétitions et les crochets `[...]` définissent des jeux de caractères. Le regroupement avec des parenthèses `(...)` vous permet d'extraire des parties spécifiques d'un motif. De plus, `re.sub()` vous permet de rechercher un modèle et de le remplacer par une nouvelle chaîne. Bien que l’expression régulière ait une courbe d’apprentissage abrupte, sa maîtrise vous fournit un outil incroyablement rapide et polyvalent pour le traitement de texte.

Sortie de code et d'exécution

Utilisation du module re pour valider et extraire les composants d'une adresse e-mail.

import re

text = "Contact support at info@pyrun.xyz or developer@pyrun.xyz today."

# Pattern to match email addresses
email_pattern = r"([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})"

# Find all matches
emails = re.findall(email_pattern, text)
print("Emails found:")
for user, domain in emails:
    print(f"User: {user} | Domain: {domain}")

# Redacting emails using re.sub
redacted_text = re.sub(email_pattern, "[REDACTED]", text)
print(f"\nRedacted Text:\n{redacted_text}")
Sortie terminale
Emails found:
User: info | Domain: pyrun.xyz
User: developer | Domain: pyrun.xyz

Redacted Text:
Contact support at [REDACTED] or [REDACTED] today.

Mise en œuvre étape par étape

  • Validation des entrées de format (e-mails, téléphones, mots de passe)
  • Analyse des journaux d'accès au serveur pour les codes d'état
  • Récupération d'informations à partir de rapports HTML bruts et de démarques

Foire aux questions

Quelle est la signification du préfixe « r » dans les modèles d'expression régulière ?

Il désigne une « chaîne brute ». Les chaînes brutes traitent les barres obliques inverses (\) comme des caractères littéraux au lieu de caractères d'échappement, évitant ainsi les conflits de syntaxe avec les caractères génériques d'expression régulière.

Quelle est la différence entre re.match et re.search ?

re.match vérifie uniquement une correspondance commençant au tout début de la chaîne, tandis que re.search analyse toute la chaîne à la recherche d'une correspondance.

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.