Cours Regex
Cours Regex
Cours Regex
1/- Introduction
• Expression régulière = expression rationnelle = expression normale = motif = RegEx (regular expression)
• Une expression régulière est un ensemble de caractère servant à vérifier si une expression correspond à une
structure préalablement décrite.
- C’est un outil, ou plutôt un langage dérivé du langage Perl, extrêmement puissant qui permet d’effectuer des
recherches plus poussées ou plus élargies sur une base de données volumineuse.
- On peut utiliser les expressions régulières dans presque n’importe quel langage (même en SQL !),
=> En Python, les expressions régulières sont disponibles dans le module « re » (import re).
a) Motif simple
Un motif est dit simple lorsque l’on précise la chaine à valider dans notre expression régulière.
Par exemple, si l’on souhaite trouver une correspondance exacte pour « data » :
pattern = re.compile('data')
res = pattern.findall(string)
On utilisera la méthode compile si l’on a plusieurs recherches à faire avec le même « Pattern »
Les expressions régulières utilisent plusieurs caractères spéciaux qui ont une signification particulière.
Voici quelques-uns des caractères les plus couramment utilisés :
Elles effectuent les mêmes procédés, sauf que l’écriture est plus courte et plus lisible.
Voici la liste des classes abrégées :
Syntaxes Signification
\w tous les caractères alphabétiques
\W tous les caractères non alphabétiques
\d tous les caractères numériques
\D tous les caractères non numériques
\s tous les caractères blancs (saut de page, tabulation, retour à la ligne, retour chariot, espace vertical)
\S tous les caractères non blancs
\A le début d’une chaine de caractères
\Z la fin d’une chaine de caractères
\t tabulation horizontale
\v espace vertical
\n retour à la ligne
\r retour chariot
\f saut de page
Syntaxes Signification
[[:digit:]] représente n’importe quel chiffre
[[:xdigit:]] représente les caractères hexadécimaux
[[:alpha:]] représente n’importe quel caractère alphabétique
[[:alnum:]] représente n’importe quel caractère numérique ou alphabétique
[[:space:]] représente un espace
[[:punct:]] représente un signe de ponctuation
[[:lower:]] représente les minuscules
[[:upper:]] représente les majuscules
Voici quelques-unes des méthodes les plus couramment utilisées dans le module « re » :
re.search(pattern, string) : recherche le motif pattern dans la chaîne string et renvoie le premier objet
correspondant trouvé.
re.match(pattern, string) : recherche le motif pattern au début de la chaîne string et renvoie le premier objet
correspondant trouvé.
re.findall(pattern, string) : recherche toutes les occurrences du motif pattern dans la chaîne string et renvoie une
liste de tous les objets correspondants.
re.sub(pattern, repl, string) : recherche toutes les occurrences du motif pattern dans la chaîne string et les remplace
par repl.
4/- Flags
On peut généralement spécifier un paramètre en plus aux fonctions précédentes qui fera changer le comportement
de l’expression suivant ce dernier. Ces paramètres sont appelés Flags.
Parmi eux, nous avons : « ASCII, A », « DOTALL, S », « IGNORECASE, I », « LOCALE, L », « MULTILINE, M » et «
VERBOSE, X »…
4/- Exemples d'utilisation
Code Résultat
import re
chaine = "Bonjour tout le monde" Bonjour
req = re.match(r"bonjour", chaine, re.I) #ignore case
print(req.group())
import re
chaine = "Bonjour tout le monde"
req = re.search(r"tout", chaine, re.I) #ignore case tout
print(req.group())
import re
texte = """Vous êtes au numero 123
le suivant sera donc 124"""
regex = '\d+' # 1 ou * caractères numériques ['123', '124']
res = re.findall(regex, texte)
print(res)
import re
texte = """Vous êtes au numero 123
le suivant sera donc 124""" Vous êtes au numero
res = re.sub (r'\d',"",texte) le suivant sera donc
print(res)
import re
string = "La souris verte courait dans l'herbe." ['La', 'courait', 'dans']
result = re.findall(r'\b\w*a\w*\b', string)
print(result)
https://docs.python.org/fr/3/howto/regex.html