Les expressions régulières en Python

Une expression régulière (RegEx) est une séquence de caractères qui définit un motif. Par exemple ^y..r$. Ici on a définit un motif RegEx. Le motif est: n’importe quelle chaîne de quatre lettres commençant par ‘y’ et se terminant par ‘r’. Ce motif peut être utilisé pour correspondre à une chaîne comme ‘your’.
 

Module RegEx

Python a un module intégré appelé ‘re’, qui peut être utilisé pour travailler avec des expressions régulières.

Importez le module ‘re’:

import re

 
 

RegEx en Python

Une fois le module ‘re’ importé, vous pouvez commencer à utiliser des expressions régulières:

import re

motif = "^y..r$"

str = 'your'
res = re.match(motif, str)

if res:
  print("Le mot correspond au motif.")
else:
  print("Le mot ne correspond pas au motif.")

Sortie:

Le mot correspond au motif.

 
Ici, nous avons utilisé la fonction re.match() pour rechercher un motif dans la chaîne str. La méthode renvoie un objet match si la recherche réussit. Sinon, il renvoie None.

Il existe d’autres fonctions définies dans le module ‘re’ pour travailler avec RegEx. Avant d’aller plus loin, regardons la syntaxe des expressions régulières.
 

Syntaxe des expressions régulières

Les syntaxes de base suivantes sont utilisées pour définir un motif RegEx.
 

Quantificateurs: *, ?, +.

1. Le quantificateur * correspond au caractère précédent zéro ou plusieurs fois.
 
Exemple :
 

 
2. Le quantificateur + correspond au caractère précédent une fois ou plus.
 
Exemple :
 

 
3. Le quantificateur ? correspond au caractère précédent zéro ou une fois.
 
Exemple :
 

 
 

Caractères spéciaux: ^, ., $, \d, \w.

1. Le caractère spécial ^ est utilisé pour faire correspondre le début d’une chaîne.
 
Exemple :
 

 
2. Le caractère spécial $ est utilisé pour faire correspondre la fin d’une chaîne.
 
Exemple :
 

 
3. Le caractère .(point) correspond n’importe quel caractère qu’une seule fois.
 
Exemple :
 

 
4. Le caractère \d est utilisé pour faire correspondre un caractère numérique [0-9].
 
Exemple :
 

 
5. Le caractère \D est utilisé pour faire correspondre tout caractère non numérique.
 
Exemple :
 

 
6. Le caractère \w est utilisé pour faire correspondre un caractère alphanumérique plus ‘_’ [0-9A-Za-z_].
 
Exemple :
 

 
7. Le caractère \W est utilisé pour faire correspondre un caractère non alphanumérique [^0-9A-Za-z_].
 
Exemple :
 

 
 

Classe de caractère:

Vous pouvez grouper des caractères en les mettant entre crochets.
 
1. [] est utilisé pour faire correspondre une plage de caractères.
 
Exemple :
 

 
2. [^] est utilisé pour faire correspondre tout caractère hormis ceux entre crochets.
 
Exemple :
 

 
3. [a-z] est utilisé pour faire correspondre des caractères alphabétiques de a à z, en minuscules.
 
Exemple :
 

 
4. [0-9] est utilisé pour faire correspondre des chiffres de 0 à 9.
 
Exemple :
 

 

Les fonctions RegEx

Le module ‘re’ propose un ensemble de fonctions qui nous permet de rechercher une chaîne pour une correspondance:

Fonction
Description
findall Renvoie une liste contenant toutes les correspondances
search Renvoie un objet Match s’il existe une correspondance n’importe où dans la chaîne
split Renvoie une liste où la chaîne a été divisée à chaque correspondance
sub Remplace une ou plusieurs correspondances par une chaîne donnée

 
 

La fonction findall()

La fonction findall() renvoie une liste contenant toutes les correspondances. L’exemple suivant affiche une liste de tous les correspondances:

import re

str = "Sans entrer dans le vif du sujet"
liste = re.findall("an", str)
print(liste)

Sortie:

['an', 'an']

La liste contient les correspondances dans l’ordre où elles sont trouvées. Si aucune correspondance n’est trouvée, une liste vide est renvoyée.
 

La fonction search()

La fonction search() recherche une correspondance dans la chaîne et renvoie un objet Match s’il existe une correspondance. S’il y a plus d’une correspondance, seule la première occurrence de la correspondance sera renvoyée:

import re

adresse = "Rue 41 de la République"
p = re.search("\d", adresse)

print("Le premier chiffre est situé à la position:", p.start())

Sortie:

Le premier chiffre est situé à la position: 4

 

La fonction split()

La fonction split() renvoie une liste où la chaîne a été divisée à chaque correspondance, l’exemple suivant divise la chaîne à chaque espace trouvé. ‘\s’ est utilisé pour faire correspondre les espaces.

import re

adresse = "Rue 41 de la République"
liste = re.split("\s", adresse)
print(liste)

Sortie:

['Rue', '41', 'de', 'la', 'République']

Vous pouvez contrôler le nombre d’occurrences en spécifiant le paramètre maxsplit:

import re

adresse = "Rue 41 de la République"
liste = re.split("\s", adresse, 1)
print(liste)

Sortie:

['Rue', '41 de la République']

 
 

La fonction sub()

La fonction sub() remplace les correspondances par le texte de votre choix, l’exemple suivant remplace chaque espace par un tiret ‘-‘:

import re

adresse = "Rue 41 de la République"
res = re.sub("\s", "-", adresse)
print(res)

Sortie:

Rue-41-de-la-République

Vous pouvez contrôler le nombre de remplacements en spécifiant le paramètre count:

import re

adresse = "Rue 41 de la République"
res = re.sub("\s", "-", adresse, 2)
print(res)

Sortie:

Rue-41-de la République

 

Une réflexion sur “Les expressions régulières en Python

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *