Outils pour utilisateurs

Outils du site


Panneau latéral

regex

Ceci est une ancienne révision du document !


Regex ou relations rationnelles

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.

Récapitulatif

é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é)
Composition
| permet une alternative entre ce qui est d'un côté ou de l'autre
. un caractère, quelqu'il soit
\ permet d'échapper un caractère spécial normalement utilisé pour décrire une regex (ex: . * )
\S tout caractère qui n'est pas un whitespace (=espace) (testé en python)

Principe

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

Classes

alternative

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.

plage

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.

négation dans une classe

Elle est marquée par le caractère ^. : [^a-z] pour définir qque chose qui ne contient aucune lettre en minuscule.

Quantificateurs

?, +, *. 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).

Assertions

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)

regex.1480423208.txt.gz · Dernière modification: 2018/10/13 20:32 (modification externe)