Expressions régulières en Python

PythonPythonBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Les expressions régulières, également appelées "regex", sont un outil puissant pour travailler avec les chaînes de caractères. Elles peuvent être utilisées pour rechercher, éditer et manipuler le texte de diverses manières. Dans ce laboratoire, vous allez apprendre les bases du travail avec les expressions régulières en Python.

Objectifs

  • Expressions régulières

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/AdvancedTopicsGroup(["Advanced Topics"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python/BasicConceptsGroup -.-> python/strings("Strings") python/ModulesandPackagesGroup -.-> python/importing_modules("Importing Modules") python/ModulesandPackagesGroup -.-> python/standard_libraries("Common Standard Libraries") python/AdvancedTopicsGroup -.-> python/regular_expressions("Regular Expressions") subgraph Lab Skills python/strings -.-> lab-93{{"Expressions régulières en Python"}} python/importing_modules -.-> lab-93{{"Expressions régulières en Python"}} python/standard_libraries -.-> lab-93{{"Expressions régulières en Python"}} python/regular_expressions -.-> lab-93{{"Expressions régulières en Python"}} end

Importer le module re

Pour utiliser les expressions régulières en Python, vous devrez importer le module re.

Ouvrez une nouvelle session d'interpréteur Python et tapez le code suivant :

python3

Ajoutez la ligne suivante en haut de votre script Python :

import re

Compiler une expression régulière

Avant d'être capable d'utiliser une expression régulière pour rechercher un motif dans une chaîne de caractères, vous devez d'abord la compiler. Pour compiler une expression régulière, vous pouvez utiliser la fonction re.compile().

Par exemple, le code suivant compilera une expression régulière qui recherche la lettre "a" dans une chaîne de caractères :

regex = re.compile(r"a")

Remarquez que le r avant la chaîne indique qu'il s'agit d'une chaîne "brute", ce qui signifie que les antislash sont traités comme des caractères littéraux plutôt que comme des caractères d'échappement. Cela est généralement recommandé lorsqu'on travaille avec des expressions régulières pour éviter la confusion.

Utiliser la méthode search()

Maintenant que vous avez compilé une expression régulière, vous pouvez utiliser la méthode search() pour rechercher un motif dans une chaîne de caractères.

Par exemple, le code suivant recherchera la lettre "a" dans la chaîne "chat" :

match = regex.search("cat")
print(match) ## Sortie : <re.Match object; span=(1, 2), match='a'>

La méthode search() renverra un objet Match si le motif est trouvé, ou None s'il n'est pas trouvé.

Utiliser la méthode match()

La méthode match() est similaire à la méthode search(), mais elle ne correspond qu'aux motifs au début d'une chaîne de caractères.

Par exemple, le code suivant correspondra au motif "chat" au début de la chaîne "chatchien" :

regex = re.compile(r"chat")
match = regex.match("chatdog")
print(match) ## Sortie : <re.Match object; span=(0, 3), match='chat'>

Utiliser la méthode findall()

La méthode findall() renvoie une liste de toutes les occurrences d'un motif dans une chaîne de caractères.

Par exemple, le code suivant trouvera toutes les lettres "a" dans la chaîne "chat" :

regex = re.compile(r"a")
matches = regex.findall("cat")
print(matches)  ## Sortie : ["a"]

Il existe de nombreux caractères spéciaux que vous pouvez utiliser dans les expressions régulières pour correspondre à des motifs plus complexes. Voici quelques exemples :

  • . (point) correspond à n'importe quel caractère unique
  • * correspond à zéro ou plusieurs occurrences du caractère précédent
  • + correspond à une ou plusieurs occurrences du caractère précédent
  • ? correspond à zéro ou une occurrence du caractère précédent
  • [caractères] correspond à n'importe lequel des caractères à l'intérieur des crochets

Utiliser les groupes

Vous pouvez utiliser des groupes dans vos expressions régulières pour extraire des parties spécifiques d'un motif. Les groupes sont créés en entourant une partie du motif entre parenthèses.

Par exemple, l'expression régulière suivante correspondra à tout mot qui commence par "chat" et se termine par "chien" :

regex = re.compile(r"chat(.*)chien")

Vous pouvez ensuite utiliser la méthode group() de l'objet Match pour extraire la partie du motif qui a été correspondue par le groupe. Par exemple :

match = regex.search("chatchien")
print(match.group(1))  ## Sortie : "" (chaîne vide)

match = regex.search("chatfoodchien")
print(match.group(1))  ## Sortie : "food"

Utiliser la méthode sub()

La méthode sub() vous permet de remplacer toutes les occurrences d'un motif dans une chaîne de caractères par une autre chaîne de caractères.

Par exemple, le code suivant remplacera toutes les lettres "a" dans la chaîne "chat" par la lettre "b" :

regex = re.compile(r"a")
new_string = regex.sub("b", "chat")
print(new_string)  ## Sortie : "cbt"

Utiliser la méthode split()

La méthode split() vous permet de diviser une chaîne de caractères selon un motif.

Par exemple, le code suivant divisera la chaîne "chat chien" selon le caractère espace :

regex = re.compile(r" ")
words = regex.split("chat chien")
print(words)  ## Sortie : ["chat", "chien"]

Regex101

Regex101 est un outil de test d'expressions régulières en ligne qui vous permet de tester vos expressions régulières contre une chaîne de votre choix. C'est une ressource utile pour le débogage et le développement d'expressions régulières, car il fournit des informations détaillées sur les correspondances et les erreurs dans votre expression régulière.

  • https://regex101.com

Pour utiliser Regex101, vous pouvez entrer une expression régulière dans le champ "Regex" et une chaîne à tester contre elle dans le champ "Chaîne de test". Au fur et à mesure que vous tapez, l'outil mettra en évidence les correspondances dans la chaîne et affichera également les erreurs ou avertissements dans la section "Résultat".

En plus du test d'expressions régulières, Regex101 inclut également un certain nombre de fonctionnalités utiles, telles que la possibilité de sauvegarder et de partager vos expressions régulières, une bibliothèque de modèles d'expressions régulières courants et des options pour personnaliser la manière dont l'outil effectue les correspondances.

Dans l'ensemble, Regex101 est un outil précieux pour quiconque travaille avec des expressions régulières en Python ou dans n'importe quel autre langage de programmation.

Récapitulatif

Dans ce laboratoire, vous avez appris à utiliser les expressions régulières en Python pour rechercher, correspondre et manipuler des chaînes de caractères. Vous avez appris comment compiler des expressions régulières, comment utiliser diverses méthodes telles que search(), match(), findall() et sub(), et comment utiliser des caractères spéciaux et des groupes pour correspondre à des motifs plus complexes.

J'espère que cela vous aidera! N'hésitez pas à me contacter si vous avez des questions.