Regular expression
Tutorial du 1 mars 2005 - Aurlien Jarno
I - Significations des mtacaractres :

    * \ sert  protger un caractre, au cas o il aurait une autre interprtation possible.
      Comme en C, il prcde les caractres n, t, ... pour dsigner la fin de ligne (\n), une tabulation (\t), etc ..

    * [ ] sert  dsigner un ensemble de caractres  reconnaitre:
          o [fa]oo par exemple recherche les chaines formes par f, ou a, suivi de "oo", soit foo ou bien aoo
          o [a-z] reprsente l'ensemble des lettres minuscules
          o [0-9] reprsente l'ensemble des chiffres
          o [^O] le symbole ^ ngative l'expression. Donc ici on cherche n'importe quelle lettre, O tant exclus.
          o [^0-9] recherche n'importe quel caractre autre que numrique.
          o [:alpha:] reprsente l'ensemble des caractres alphabtiques, donc [[:alpha:]] est quivalent  [A-Za-z]
          o [=a=] reprsente la classe des caractres semblables  a, donc ici les lettres minuscules
          o [=0=] reprsente la classe des chiffres

    * +, * et ? servent  exprimer une rptition :
          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  dire que le o est optionnel (de 0  n fois)
          o fo? Le ? signifie zro ou 1 fois, donc reconnait seulement les chaines f et fo

    * {} servent  exprimer une rptition, mais avec plus de prcision :
          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 caractres

    * Le caractre . reprsente n'importe quel caractre, autre que fin de ligne. Il est souvent associ  * pour dsigner une succession quelconque de caractres

    * Les parenthses () servent  grouper un ensemble de caractres tel que (ab) qui signifie "ab" en tant que chaine de caractres et non plus un ensemble de caractres. Avec certains outils, permet en plus de mmoriser l'occurence trouve, laquelle peut-tre rtiliser par la suite dans l'expression sous la forme : \1,\2,...\n. Par exemple : ([au]\1)+ reconnait une squence de a ou de u comme par exemple "aaaaaa" ou "uuu".

    * Le caractre | sert  tablir une alternative : (oo|ba) recherche la chaine "oo" ou bien "ba".

    * ?: se rajoute en dbut d'une expression entre parenthses pour ne pas mmoriser : (?:oo|ba)

    * Les caractres ^ et $ reprent les dbuts et fin de ligne.

    * Les raccourcis :
          o \w reprsente l'ensemble [A-Za-z]
          o \W reprsente l'ensemble [^A-Za-z] (soit la ngation du prcdent)
          o \d reprsente l'ensemble [0-9]
          o \D reprsente l'ensemble [^0-9]
          o \b reprsente les caractres d'espacement
          o \B reprsente la ngation de \b

    * Un remplacement d'une occurence par une chaine s'crit : /chaine1/chaine2/, ou chaine2 viendra remplacer l'occurence de chaine1. Exemple : /foo/bar/ remplace "foo" par "bar"

    * ?!chaine ngative la recherche d'une chaine
      . Par exemple, pour chercher tous les fichiers autres que ceux ayant l'extension ".bat" ou ".pif", on crit :

      ^.*\.(?!(bat|pif)$).*$,
      o :
          o ^ exprime le dbut de ligne,
          o .* une srie de caractres quelconques reprsentant le nom du fichier (sans extension),
          o \. le caractre ".",
          o (?!(bat|pif)$) la ngation des chaines "bat" ou "pif", et seulement elles puisqu'elles doivent etre suivi du caractre de fin de ligne (prsence du symbole $  la suite),
          o .* qui dsigne les caractres correspondant  l'extension du fichier,
          o $ pour la fin de ligne.

