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:
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