Cours Regex

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 3

Cybersécurité : sécurisation du code – les expressions régulières

Les expressions régulières

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).

Les expressions régulières s’utilisent dans des domaines divers et variés.


En effet, on peut s’en servir pour :
• Des recherches de correspondances
• Le remplacement d’expression
• L’analyse de données
• La validation de données
• Et le changement de formats

2/- Les différentes syntaxes de regex

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 »

b) Les caractères spéciaux

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 :

. : représente n'importe quel caractère.


^ : représente le début d'une chaîne.
$ : représente la fin d'une chaîne.
* : représente zéro ou plusieurs occurrences du caractère précédent.
+ : représente une ou plusieurs occurrences du caractère précédent.
? : représente zéro ou une occurrence du caractère précédent.
{n} : représente exactement n occurrences du caractère précédent.
{n,} : représente au moins n occurrences du caractère précédent.
{n,m} : représente entre n et m occurrences du caractère précédent.
[] : représente une « classe » de caractères.
Par ex, [abc] → représente soit le caractère a, b ou c.
[0-9] → représente l’ensemble des chiffres se trouvant entre 0 et 9.
() : permet de grouper des expressions régulières.
c) Les classes abrégées

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

d) Les classes nommées

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

3/- Les méthodes du module « re »

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

Vous aimerez peut-être aussi