Ceci est une ancienne révision du document !
Dans ce chapitres, il ne s'agit pas d'une conf, mais d'un outil qui est utilisé ici où là, notamment dans la conf de nginx.
élément | signification |
---|---|
Positionnement | |
^ | début de la chaîne |
$ | fin de la chaîne |
Quantificateurs | |
* | répétition du motif précédent, zéro, une ou plusieurs fois |
? | répétition du motif précédent, zéro ou une fois |
+ | répétition du motif précédent, une ou plusieurs fois |
{N} | répétition du motif précédent N fois |
Structurants | |
( ) | Permet de délimiter un motif à évaluer en priorité |
[ ] | définit une classe, ce qui correspond à un motif dans le motif (voir le paragraphe dédié) |
| | permet une alternative entre ce qui est d'un côté ou de l'autre |
Spéciaux | |
. | un caractère, quelqu'il soit |
\ | permet d'échapper un caractère spécial normalement utilisé pour décrire une regex: ^$*?+{}()[]|.\! |
! | euh |
Les raccourcis | |
\S | tout caractère qui n'est pas un whitespace (=espace) (testé en python) |
Le concept est de permettre la sélection d'éléments au sein d'une chaîne alphanumérique au sens large. C'est très utilisé pour vérifier si une chaine a un format convenable (email dans un formulaire web, dans ce cas, on se concentre sur la présence d'un motif/formatage particulier avec retour d'un booléen), ou encore pour effectuer des remplacements (commande perl-rename dans archlinux).
Une classe est délimité par des [ ]
. N'importe quoi contenu dans la classe peut convenir. Par exemple : [aeiouy]
permet de sélectionner (matcher) une voyelle.
On peut aussi définir des intervalles avec -
, [3-6]
définit un chiffre compris entre 3 et 6 inclus.
On peut cumuler la notion de plage avec la notion d'alternative : [a-zA-Z]
pour définir une lettre en majuscule ou en minuscule.
Elle est marquée par le caractère ^
. : [^a-z]
pour définir qque chose qui ne contient aucune lettre en minuscule.
Dans une classe, l'échappement \
ne doit pas être utilisé devant un caractère spécial d'une regex (^$*?+{}()[]|.\!
) sauf ]
car on s'en sert pour fermer la classe, et sauf -
et ^
dont on se sert dans la définition des classes.
?
, +
, *
. S'appliquent au motif précédent, que ce soit une classe, un groupe ou juste une lettre. Dans chiens?
, le ?
ne s'applique qu'au s
, donc définit un chien
ou des chiens
.
Les { }
peuvent être aussi utilisées pour déterminer le nombre exact de répétition. [0-9]{4}
sert à définir une date comme 1789, mais pas 495 (n'a que 3 chiffres).
Il s'agit de test qui sont effectués sur les caractères précédents ou suivant les caractères en cours d'étude, et ne font pas partie de la sélection.
b(?=[a-zA-Z])
est positif si la lettre b est suivie par une autre lettre
b(?![0-9])
est positif si la lettre b n'est pas suivie d'un nombre (assertion négative)