Regexp
Dans le jargon informatique, une expression régulière, ou Regexp, est une chaîne de caractères servant à décrire un ensemble de chaînes de caractères respectant une syntaxe possible. Elle est très utile dans la manipulation de texte, pour rechercher, remplacer ou supprimer.
Guide
Méta-caractères
Un méta-caractère est un symbole remplissant une fonction particulière.
Méta-caractères | Signification |
---|---|
? | Opérateur portant sur l'expression précédente : 0 ou une fois l'expression précédente. |
* | Opérateur portant sur l'expression précédente : 0, 1 ou plusieurs fois l'expression précédente. |
+ | Opérateur portant sur l'expression précédente : 1 ou plusieurs fois l'expression précédente. |
{n} | Opérateur portant sur l'expression précédente : n fois exactement l’expression précédente |
{n,m} | Opérateur portant sur l'expression précédente : n fois minimum et m fois maximum l’expression précédente |
^ | Négation ou début de ligne. |
$ | Fin de ligne. |
[] | Les crochets définissent une liste de caractères autorisés |
() | Les parenthèses définissent un élément composé de l'expression régulière qu'elle contient |
| | Opérateur ou. |
N.B. : Pour que le méta-caractère * ne soit par interprété par l'analyseur, il faut utiliser « \* » ou « [*] ».
Les intervalles de caractères
Un intervalle de caractères peut être défini en écrivant entre [ ] la liste des caractères de cet intervalle.
Classe | Signification |
---|---|
[abc] | La classe des trois caractères a, b et c |
[a-z] | La classe de tous les caractères de a à z. |
[^abc] | La classe de tous les caractères sauf a, b et c. |
[a-zA-Z] | L'union des classes [a-z] et [A-Z]. |
Exemples
"^debut": chaîne qui commence par "debut"
"fin$": chaîne qui se termine par "fin"
"^chaîne$": chaîne qui commence et se termine par "chaîne"
"abc": chaîne contenant la chaîne "abc"
"abc+": chaîne qui contient "ab" suivie de un ou plusieurs "c" ("abc", "abcc" ...)
"abc*": chaîne qui contient "ab" suivie de zero ou plusieurs "c" ("ab", "abc" ...)
"abc?": chaîne qui contient "ab" suivie de zero ou un "c" ("ab" ou "abc")
"^abc+": chaîne commençant par "ab" suivie de un ou plusieurs "c" ("abc", "abcc" ...)
"abc{2}": chaîne qui contient "ab" suivie de deux "c" ("abcc")
"abc{2,}": chaîne qui contient "ab" suivie de deux "c" ou plus ("abcc" etc..)
"abc{2,4}": chaîne qui contient "ab" suivie 2, 3 ou 4 "c" ("abcc" .. "abcccc")
"a(bc)*": chaîne qui contient "a" suivie de zero "bc" ou plus
"un|le": chaîne qui contient "un" ou "le"
"(un|le) chien": chaîne qui contient "un chien" ou "le chien"
"(a|b)*": chaîne qui contient une suite de "a" ou de "b"
"^.{3}$": chaîne qui contient 3 caractères exactement.
"[abc]": chaîne qui contient un "a", un "b", ou un "c".
"[a-z]": chaîne qui contient un caractère compris entre "a" et "z".
"^[a-zA-Z]": chaîne qui commence par une lettre minuscule ou majuscule.
"^[^a-zA-Z]": chaîne qui ne commence pas par une lettre.
"[\+?{}.]": chaîne qui contient un de ces six caractères : \+?{}.
Application à la commande grep
grep '^smu' file
cherche 'smu' au début de chaque ligne dans file.
grep 'smu$' file
cherche 'smu' à la fin de chaque ligne dans file.
grep '^smu$' file
retourne les lignes contenant seulement et exactement 'smu'.
grep '\^s' file
retourne les lignes commençant par '^s',car "\" permet de considérer ^ comme un caractère normal et non plus un méta-caractère.
grep '[Ss]mu' file
affiche les lignes contenant 'Smu' ou 'smu'.
grep 'B[oO][bB]' file
affiche les lignes contenant BOB, Bob, BOb or BoB.
grep '^$' file
recherche les lignes vides dans file.
grep '[0-9][0-9]' file
recherche les lignes contenant 2 chiffres côte à côte.