Expression régulière simple
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.
Méta-caractères : . ? * + $
Certain caractères sont spéciaux, on les appelle les 'méta-caractères' :
- le point '.' : représente n'importe quel caractère (pour rechercher '.' il faut indiquer '\.')
- le point d’interrogation '?' : 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
- le dollars $ : le caractè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 méta-caractère | : a|b => a or b
- Occurence méta-caractère [ ]
- [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 "\".
Commentaire
Vincent LEMAITRE dit :
Il y a une erreur sur l'exemple avec le '+' : ce n'est pas '12334' mais plutôt '12234' :