kicad/regex_doc.txt

61 lines
3.7 KiB
Plaintext
Raw Normal View History

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.