Memento Expression Régulière

Regular Expression

Table des matières :

Expression régulière simple

Avant tout, une expression régulière permet de trouver plusieurs mots ou phrases qui sont proches.

Exemples :
  • hydro => hydro, hydrogen, hydrodynamics, hydroplane, toutes autres phrases ou mots avec hydro.

Metacharacters : . ? * + $

Certain caractères sont spéciaux, on les appelle les 'metacharacters'.
  • le point '.' : représente n'importe quel caractère (pour rechercher '.' il faut indiquer '\.')
  • le point d'intérogation '?' : le caractère précédent ? est optionnel
  • l'étoile '*' : le caractère précédent * peut être répété 0 ou plusieurs fois
  • le plus '+' : le caractère précédent + peut être répété 1 ou plusieurs fois
  • dollars $ : le carcatère est à la fin d'une ligne
Le caractère '\' permet d'utiliser les caractères . ? * + de manière normale. On utilisera '\.' pour rechercher seulement '.', '\?' pour rechercher '?', ...

Exemples :
  • Avec le point '.'
    • 123.5 => 123.5, 12345, 123s5, 123-5
    • 12..5 => 12345, 123s5, 123-5, 12564, 12.45
    • 3.14 => 3.14, 3114, 3f14, ...
    • 3\.14 => 3.14, ne trouve pas 3114, 3f14
  • Avec '?'
    • 12?34 => 1234, 134
    • les? chiens? => les chiens, le chien, les chien, le chiens
  • Avec '*'
    • 12*34 => 134, 1234, 12234, 12222222234, ...
  • Avec '+'
    • 12+34 => 1234, 12334, 12222222234, ... mais ne trouvera pas 134
  • Avec $
    • toto$ => toute ligne finissant pas toto
  • Combinaisons et utilisation de '\'
    • a\.*z => az, a.z, a..z, a.......z, mais ne trouvera pas abc
    • a.\*z => ab*z, a2*z, la 2eme lettre peut être n'importe quoi
    • a\++z => a+z, a++z, a+++z, a+++++++z mais ne trouvera pas az
    • a\+\+z => a++z et rien d'autre
    • a+\+z => a+z, aa+z, aaa+z, aaaaaaaa+z
    • a.?e => ae, abe, a-e, axe, ...
    • a\.?e => ae, a.e et rien d'autre
    • a.\?e => a.?e, ab?e, aX?e, ...
    • a\.\?e => a.?e et rien d'autre

Groupes de caractères définis par '\' : \d \D \w \W \s \S \b \B \nnn

Le caractère '\' dans certains cas peut définir un groupe de caractères :
  • \d : tout caractère numérique : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
  • \D : tout caractère sauf numérique
  • \w : word metacharacter : une lettre [a-z] [A-Z] ou lettre accentuée, un chiffre [0-9] ou '_'.
  • \W : tout caractère saut lettre [a-z] [A-Z], lettre accentuée, chiffre [0-9] et '_'.
  • \s : whitespace metacharacter : espace, tabulation, saut de ligne, ou tout autre caractère non imprimable
  • \S : tout caractère sauf ceux définis par \s
  • \b : word boundary metacharacter : espace, ponctuation, le debut du texte, la find du texte
  • \B : le contraire de \b
  • \nnn : octal metacharacter, ex: \005, \123

Exemples :
  • 1\.\d\d\d4 => 1.1234, 1.9994, 1.0004, ...
  • a\Dz => aaZ, a%z, ... mais ne trouvera pas à a2z, a0z
  • \D+ : Trouve toute string non nulle ne contanant pas de caractère numérique

Autres méta caractères

  • Accolades {m, n} : Les accolades agisent un peut comme l'étoile, sauf que l'on peut spécifier le nombre de répétitions permises, entre n et m.
  • Alternative metacharacter | : a|b => a or b
  • Occurence metacharacter [ ]
    • [abc] : 1 lettre au choix parmis ...
    • [a-z], [b-e], [a-zA-Z]: lettre comprise entre ...
    • [0-9], [5-8] : chiffre compris entre ...
    • [abc-] [a-z-] : toute lettre ... et '-'
    • [^abc] [^a-d] : toute lettre sauf ...
Exemples
  • Accolades
    • a{1,3} => a, aa, aaa et rien d'autre
    • abc{2,4}d => abccd, abcccd, abccccd et rien d'autre
    • a.{2,2}z => abcz, aXXz, ak0z, ...
  • Alternative
    • a|b => a, b
    • (a|b)+ => a, b, ab, abb, bbbbbb, ababb, ...
  • Occurence
    • [cmt]an => can, man, tan mais ne rouve pas pan, ...
    • a[a-d]z => aaz, abz, acz, adz et rien d'autre
    • exemple[4-8] => exemple4, exemple5, exemple6, exemple7, exemple8 et rien d'autre
    • [\[\\\]]abc => toute string de 4 lettres finissant par "abc" et commançant par "[", "]", or "\".

Liens

Perl Regular Expression Tutorial
A Tao of regular expression
Regular Expressions Reference
JavaRegex - Regular Expressions in Java


Article extrait du site Loribel.com.
https://loribel.com/info/memento/regex.html