Ceci est une ancienne révision du document !
~~CLOSETOC~~
Les expressions régulières (regex)
Les expressions régulières ou regex peuvent paraître compliquées au premier abord mais en y regardant de plus près, on se rend compte que c'est plutôt simple. Le principe d'une expression régulière est de créer un schéma qui permettra de valider la forme d'une chaîne de caractères. Par exemple, si dans un script, vous demandez à l'utilisateur de renseigner son numéro de téléphone au format international, il vous faudra valider la réponse de ce dernier. Si il répond +33123456789 pour la france ou +8612345678901 pour un portable chinoix, c'est bon, mais si il répond toto@messagerie.com ou James BOND, ça ne l'est pas. La réponse va alors pouvoir être comparée à une regex et si le résultat renvoyé est $true, alors la réponse de l'utilisateur correspond au format de réponse attendue.
- Référence : Microsoft
- Pour s'entraîner et valider les regex : regular expressions 101
Quelques exemples :
# Exemple 1 : on vérifie un code PIN de 4 chiffres.
"0123" -match "^[0-9]{4}$"
$true
"012a" -match "^[0-9]{4}$"
$false
# Dans cet exemple :
# ^ signifie le début de la chaîne.
# [0-9] signifie un chiffre de 0 à 9.
# {4} signifie 4 itérations de [0-9] donc 4 chiffres compris entre 0 et 9 mais pas forcément les mêmes.
# $ signifie la fin de la chaîne.
# Exemple 2 : on vérifie un numéro de téléphone en France, hors portables et numéros spéciaux ou à tarifications particulières.
"0123456789" -match "^0[1-5][0-9]{8}$"
$true
"0800123456" -match "^0[1-5][0-9]{8}$"
$false
"+33123456789" -match "^0[1-5][0-9]{8}$"
$false
# Dans cet exemple :
# ^ signifie le début de la chaîne.
# 0 signifie litéralement le chiffre 0.
# [1-5] signifie un chiffre de 1 à 5.
# [0-9] signifie un chiffre de 0 à 9.
# {8} signifie 8 itérations de [0-9] donc 8 chiffres compris entre 0 et 9 mais pas forcément les mêmes.
# $ signifie la fin de la chaîne.
Les caractères de structures
| Caractère | Explication | Exemple | |
|---|---|---|---|
| En début de chaîne, indique que la chaîne doit commencer par les informations de la regex. Sans cela, la comparaison ce fera à partir de n'importe quel caractère de la chaîne à vérifier. | "^PC-" # Indique que la chaîne doit commencer par "PC-" "PC-" # Indique que la chaîne doit contenir "PC-" |
Discussion