Les « expressions régulières » sont un outil pour l’extraction et le traitement d’informations contenues dans un fichier texte. Elles sont implémentées dans des commandes Unix comme sed, awk, dans l’éditeur vi, et, bien sûr, sont utilisées de manière intensive par le langage Perl.
Une expression régulière définit un « masque », auquel sera comparé un ensemble de chaînes de caractères : le masque établit les critères d’appartenance d’une chaîne à un ensemble. Ainsi, par exemple, on codera l’ensemble caractères alphabétiques en minuscules avec l’expression régulière : [a-z] (ce qui est équivalent à écrire : [abcdefghijklmnopqrstuvwxyz])
Méta-caractères
Les caractères réservés (méta-caractères) [ et ] désignent le début et la fin de l’intervalle considéré. Il existe d’autres méta-caractères, et parmi eux :
. |
désigne n’importe quel caractère
sauf le caractère de fin de ligne |
+ |
désigne le caractère qui précède
répété au moins une fois (ainsi a+ fait correspondre les séquences
« a », « aa », « aaa », etc.) |
? |
désigne le caractère qui précède
répété au plus une fois (ainsi, a ? fait correspondre les séquences
« » (chaîne vide) et « a ») |
*
|
désigne le caractère qui précède
répété un nombre quelconque de fois, y compris zéro (ainsi,
a* fait correspondre les séquences « », « a »,
« aa », « aaa », etc.) |
^ |
désigne le ou les caractères qui
précèdent s’ils sont situés en début de ligne (ainsi, ^L désignera
le L de « La vie... », mais pas le L de « ceci est un
L ») |
$ |
désigne le ou les caractères qui
précèdent s’ils sont situés en fin de ligne (ainsi, L$ désignera le
L de « ceci est un L », mais pas le L de « La
vie... ») |
() |
désigne un groupe de
caractères (ainsi, a(bcd)+ fait correspondre les séquences
« abcd », « abcdbcd », etc.) et permet également de
mémoriser une séquence (ainsi, <(.+)> mémorise le texte
contenu entre < et > dans la variable $1) |
| |
opérateur OR (ainsi, a|b
désigne le caractère a ou le caractère b) |
[^] |
opérateur
« complémentaire » (a
insi, [^abc] désigne l’ensemble caractères
qui ne sont pas a, b et c) |
n |
désigne le caractère qui précède
exactement n fois (ainsi, a2 fait correspondre la séquence
« aa » et non « a » ou
« aaa ») |
Cette liste n’est pas exhaustive, mais définit les méta-caractères les plus courants. On voit immédiatement qu’en combinant plusieurs de ces méta-caractères, de très nombreuses possibilités de manipulation d’une chaîne deviennent possibles. A noter que tous les métacaractères peuvent être considérés comme des caractères traditionnels au sein d’une expression régulière : il suffit de les faire précéder d’un \\. Ainsi, \\+ désigne le caractère traditionnel « + ». Le caractère « \\ » lui-même s’écrira en particulier \\\\.
Caractères spéciaux
Catégorie particulière de méta-caractères, les caractères spéciaux permettent de faire référence à des éléments « invisibles » d’une chaîne de caractères, comme une tabulation, un retour à la ligne, ou la fin d’une ligne, ou à des types de caractères spécifiques (lettres, chiffres, etc.). Ces caractères spéciaux sont codés par un \\ suivi d’une lettre. Voici les principaux :
\\n |
caractère de fin de ligne |
\\r |
retour à la ligne (retour
chariot) |
\\t<
/B> |
tabulation |
\\s |
espacement (« », « . »,
« , ») |
\\S |
tout ce qui n’est pas un
espacement |
\\d |
n’importe quel chiffre |
\\D |
tout ce qui n’est pas un
chiffre |
\\w |
n’importe quelle lettre |
\\W |
tout ce qui n’est pas une
lettre |
|