61 lines
3.7 KiB
Plaintext
61 lines
3.7 KiB
Plaintext
|
Regular expression
|
|||
|
Tutorial du 1 mars 2005 - Aur<75>lien Jarno
|
|||
|
I - Significations des m<>tacaract<63>res :
|
|||
|
|
|||
|
* \ sert <20> prot<6F>ger un caract<63>re, au cas o<> il aurait une autre interpr<70>tation possible.
|
|||
|
Comme en C, il pr<70>c<EFBFBD>de les caract<63>res n, t, ... pour d<>signer la fin de ligne (\n), une tabulation (\t), etc ..
|
|||
|
|
|||
|
* [ ] sert <20> d<>signer un ensemble de caract<63>res <20> reconnaitre:
|
|||
|
o [fa]oo par exemple recherche les chaines form<72>es par f, ou a, suivi de "oo", soit foo ou bien aoo
|
|||
|
o [a-z] repr<70>sente l'ensemble des lettres minuscules
|
|||
|
o [0-9] repr<70>sente l'ensemble des chiffres
|
|||
|
o [^O] le symbole ^ n<>gative l'expression. Donc ici on cherche n'importe quelle lettre, O <20>tant exclus.
|
|||
|
o [^0-9] recherche n'importe quel caract<63>re autre que num<75>rique.
|
|||
|
o [:alpha:] repr<70>sente l'ensemble des caract<63>res alphab<61>tiques, donc [[:alpha:]] est <20>quivalent <20> [A-Za-z]
|
|||
|
o [=a=] repr<70>sente la classe des caract<63>res semblables <20> a, donc ici les lettres minuscules
|
|||
|
o [=0=] repr<70>sente la classe des chiffres
|
|||
|
|
|||
|
* +, * et ? servent <20> exprimer une r<>p<EFBFBD>tition :
|
|||
|
o fo+ reconnait la chaine fo suivi de n fois la lettre O, donc foo, fooo, fooo, ...
|
|||
|
o fo* reconnait les chaines f, fo, fo, ..., c'est <20> dire que le o est optionnel (de 0 <20> n fois)
|
|||
|
o fo? Le ? signifie z<>ro ou 1 fois, donc reconnait seulement les chaines f et fo
|
|||
|
|
|||
|
* {} servent <20> exprimer une r<>p<EFBFBD>tition, mais avec plus de pr<70>cision :
|
|||
|
o {,3} signifie trois fois au plus
|
|||
|
o {2,} signifie deux fois au minimum
|
|||
|
o {2} signifie deux fois et deux fois seulement
|
|||
|
Exemple : [a-f0-9]{8} cherche tous les chiffres hexadecimaux sur 8 caract<63>res
|
|||
|
|
|||
|
* Le caract<63>re . repr<70>sente n'importe quel caract<63>re, autre que fin de ligne. Il est souvent associ<63> <20> * pour d<>signer une succession quelconque de caract<63>res
|
|||
|
|
|||
|
* Les parenth<74>ses () servent <20> grouper un ensemble de caract<63>res tel que (ab) qui signifie "ab" en tant que chaine de caract<63>res et non plus un ensemble de caract<63>res. Avec certains outils, permet en plus de m<>moriser l'occurence trouv<75>e, laquelle peut-<2D>tre r<><72>tiliser par la suite dans l'expression sous la forme : \1,\2,...\n. Par exemple : ([au]\1)+ reconnait une s<>quence de a ou de u comme par exemple "aaaaaa" ou "uuu".
|
|||
|
|
|||
|
* Le caract<63>re | sert <20> <20>tablir une alternative : (oo|ba) recherche la chaine "oo" ou bien "ba".
|
|||
|
|
|||
|
* ?: se rajoute en d<>but d'une expression entre parenth<74>ses pour ne pas m<>moriser : (?:oo|ba)
|
|||
|
|
|||
|
* Les caract<63>res ^ et $ rep<65>rent les d<>buts et fin de ligne.
|
|||
|
|
|||
|
* Les raccourcis :
|
|||
|
o \w repr<70>sente l'ensemble [A-Za-z]
|
|||
|
o \W repr<70>sente l'ensemble [^A-Za-z] (soit la n<>gation du pr<70>c<EFBFBD>dent)
|
|||
|
o \d repr<70>sente l'ensemble [0-9]
|
|||
|
o \D repr<70>sente l'ensemble [^0-9]
|
|||
|
o \b repr<70>sente les caract<63>res d'espacement
|
|||
|
o \B repr<70>sente la n<>gation de \b
|
|||
|
|
|||
|
* Un remplacement d'une occurence par une chaine s'<27>crit : /chaine1/chaine2/, ou chaine2 viendra remplacer l'occurence de chaine1. Exemple : /foo/bar/ remplace "foo" par "bar"
|
|||
|
|
|||
|
* ?!chaine n<>gative la recherche d'une chaine
|
|||
|
. Par exemple, pour chercher tous les fichiers autres que ceux ayant l'extension ".bat" ou ".pif", on <20>crit :
|
|||
|
|
|||
|
^.*\.(?!(bat|pif)$).*$,
|
|||
|
o<> :
|
|||
|
o ^ exprime le d<>but de ligne,
|
|||
|
o .* une s<>rie de caract<63>res quelconques repr<70>sentant le nom du fichier (sans extension),
|
|||
|
o \. le caract<63>re ".",
|
|||
|
o (?!(bat|pif)$) la n<>gation des chaines "bat" ou "pif", et seulement elles puisqu'elles doivent etre suivi du caract<63>re de fin de ligne (pr<70>sence du symbole $ <20> la suite),
|
|||
|
o .* qui d<>signe les caract<63>res correspondant <20> l'extension du fichier,
|
|||
|
o $ pour la fin de ligne.
|
|||
|
|