Informations :
Dates
- Publish : : 2010
- Modification : Wednesday 14 june 2017
- 1498 views
Share :
Présentation : Regex (Regular ou expressions régulières)
Depuis les Howto > GNU/Linux > SHells">SHells Howto > GNU/Linux">GNU/Linux ont peut utiliser les expressions régulières comme directement depuis les Howto > Developpement">languages de programmation .
POSIX (Portable Operating System Interface (le X exprime l'héritage UNIX)) est une norme désignée par IEEE 1003 de standardisation des interfaces de programmation des logiciels destinés à fonctionner sur les variantes du système d'exploitation UNIX.
POSIX spécifie dans dix-sept documents différents, les "interfaces utilisateurs" et les "interfaces logicielles".
La ligne de commande standard et l'interface de script est le Bourne SHell.
On retrouve ce standard dans différents languages comme PHP, MySQL, PERL, Python...
Utilisation :
On peut utiliser les expressions régulières avec certaines commandes comme awk
, grep
ou find
et depuis les éditeurs comme vim
, et emacs
.
Les quantificateurs :
-
?
qui définit un groupe qui existe zéro ou une fois : toto? correspondant alors à « tot » ou « toto » mais pas « totoo » ; -
*
qui définit un groupe qui existe zéro, une ou plusieurs fois : toto* correspondant à « tot », « toto », « totoo », « totooo », etc. ; -
+
qui définit un groupe qui existe une ou plusieurs fois, toto+ correspondant à « toto », « totoo », « totooo », etc. mais pas « tot ». -
(?=re)
recherche positive de la sous-chaîne "re". -
(?!re)
recherche négative de la sous-chaîne "re".
Les opérateurs de base :
-
^
début de ligne. -
.
un caractère et un seul (quelconque). -
$
fin de ligne. -
xyz*
zéro ou plus d'occurrences de la chainexyz
. -
xyz+
une ou plus occurrences de la chainexyz
. -
xyz?
une occurrence unique de la chainexyz
. -
(...)
délimiteurs de groupe (avec capture). On référence alors les groupes capturés dans la chaîne de substitution avec$n
oùn
est le numéro de groupe de capture entre1
et9
, la totalité de la chaîne trouvée étant représentée par$&
. -
[...]
spécification de classe de caractères permis. -
[^...]
spécification de classe de caractères interdits. -
{n}
pour définir le nombre exact de répétitionn
du caractère placé devant. -
{n,}
répétition au moinsn
fois. -
{n, m}
répétition au moinsn
fois mais pas plus quem
.
Comme les caractères (
, )
, [
, ]
, .
, *
, ?
, +
, ^
, |
, $
, -
et sont utilisés comme symboles spéciaux, ils doivent être référencés dans une séquence d'échappement s'ils doivent désigner littéralement le caractère correspondant. Ceci se fait en les précédant avec une barre oblique inversée
.
Exemples :
L'expression [a-z][a-z]*
cherche les lignes contenant au minimum un caractère en minuscule. [a-z]
caractère permis, [a-z]*
recherche zéro ou plus d'occurrences des lettres permises.
L'expression ^[0-9]{4}$
a pour signification, du début ^
à la fin du fichier $
, recherche les nombres [0-9]
de 4 chiffres {4}
.
Pour donner un exemple simple, dans l'éditeur vim
pour remplacer du texte depuis la première ligne à la derniere.
En mode édition : ESC puis > :1;$s/expression/modification/g
.