Remarque : par abus de langage, le terme anglais “regular expression” est souvent traduit “expressions régulières”.
Les expressions rationnelles sont des séquences de caractères qui décrivent
rigoureusement le motif / la structure d’une chaîne de caractères ; exemple :
^[0-9]+$ signifie “une chaîne constituée d’au moins un chiffre sans aucun
autre caractère”.
Elles sont utilisées notamment pour :
- la manipulation (non-interactive) de chaînes de caractères — dans des scripts pour automatiser des tâches par exemple ;
- la validation des saisies dans les applications (web ou autres), côté client (pour la convivialité) et côté serveur (pour la sécurité) pour s’assurer que les données entrées respectent le format attendu (une adresse mél. par exemple) ;
- la réécriture d’URL (cf fichiers
.htaccess).
Les expressions rationnelles utilisent des caractères spéciaux pour :
- indiquer le début (
^) ou la fin ($) d’une chaîne (sinon d’autres caractères pourraient être présent avant ou après le motif) ; - indiquer que le caractère (ou la séquence de caractères) précédent(e) est présent(e) :
- 0 ou 1 fois (
?), - 0 ou plusieurs fois (
*), - au moins une fois (
+), - un nombre déterminé
nde fois ({n}) ;
- 0 ou 1 fois (
- indiquer un (ou plusieurs) intervalle(s) de caractères (
[debut-fin],[0-9A-Z]par exemple), n’importe quel caractère (.) ou certains caractères ([_~+]par exemple) ; - indiquer une alternative entre plusieurs séquences (
(seq.1|seq.2)) ; - ou encore mémoriser une séquence (
(seq.)) pour la réutiliser ensuite dans la chaîne de remplacement ($1,$2… en PHP,\1,\2… avecsed).
Lorsqu’un caractère spécial fait partie des caractères attendus, il faut le
désactiver en l’échappant avec un anti-slash (\).
Remarque : Dans l’interpréteur de commandes (shell), notamment avec les
commandes grep et sed, certains caractères spéciaux ((, ), | et
+ notamment) doivent être échappés pour être interprétés comme tels.
Exemple : numéro de téléphone français : ^(\+33|0)[1-9][0-9]{8}$.