Expressions régulières
Les expressions régulières ne sont pas faciles à comprendre au début car elles prennent des formes peu communes et sont donc difficiles à lire.
Les expressions régulières ou RegExp (Regular Expressions en anglais), sont très puissantes pour rechercher et manipuler du texte en utilisant des patterns (en français des motifs).
Les expressions régulières sont nées dans les années 1950 et ont été adoptées dans de nombreux langages de programmation, éditeurs de texte, et outils de traitement de données.
Les expressions régulières sont comme une langue secrète pour dire à l'ordinateur comment reconnaître des séquences de caractères dans un texte.
Si vous voulez trouver tous les numéros de téléphone dans un document, ou vérifier que l'adresse email saisie dans un formulaire est valide, les RegExp sont vos alliées.
Utiliser les expressions régulières signifie écrire un pattern.
Voici un exemple de pattern très simple : /chat(s?)/i
Un pattern pour vérifier une adresse email
Voici un exemple de pattern : ^[a-zA-Z-]+@[a-zA-Z-]+\.[a-zA-Z]{2,6}$
qui permet de vérifier si la chaîne de caractères est bien une adresse email.
Remarque sur le quantificateur {2,6}
Dans ce pattern ^[a-zA-Z-]+@[a-zA-Z-]+\.[a-zA-Z]{2,6}$
, le {2,6}
est un quantificateur qui spécifie que le caractère ou le groupe de caractères qui le précède doit apparaître au moins 2 fois et pas plus de 6 fois. Cela s'applique à la partie de l'expression régulière qui précède immédiatement le quantificateur.
Dans ce cas, [a-zA-Z]{2,6}
signifie que la partie de l'adresse e-mail qui suit le point (représentant le début du domaine de premier niveau, ou TLD) doit être composée de lettres minuscules (a-z
) ou majuscules (A-Z
) et doit avoir une longueur d'au moins deux caractères et pas plus de six. Cette longueur correspond aux longueurs courantes des TLD, comme .com
, .info
, .travel
et d'autres.
Il est important de noter que ce pattern est une simplification et ne couvre pas toutes les règles de validation des adresses e-mail définies par les standards Internet. Par exemple, des TLD plus longs ont été introduits et ne seraient pas validés par ce pattern. De plus, des caractères autres que les lettres et le tiret sont également autorisés dans certaines parties d'une adresse e-mail.
Avec une seule expression régulière, vous pouvez effectuer des tâches qui, autrement, nécessiteraient des dizaines de lignes de code.
Syntaxe de Base
Un pattern peut être composé :
- de littéraux
- de métacaractères
- d'opérations
- et de drapeaux.
Littéraux
Les littéraux sont des caractères ordinaires (comme a
, 1
, !
) qui correspondent à eux-mêmes.
Métacaractères
Les métacaractères sont des caractères spéciaux (comme .
, *
, +
, ?
, ^
, $
, (...)
) qui ont une signification particulière :
.
correspond à n'importe quel caractère*
indique que le caractère qui le précède peut être présent zéro ou plusieurs fois+
: Le signe plus indique que le caractère ou le groupe précédent doit apparaître une ou plusieurs fois.?
: Le point d'interrogation signifie que le caractère ou le groupe précédent est optionnel, c'est-à-dire qu'il peut apparaître zéro ou une fois.^
: Le caret représente le début d'une chaîne ou d'une ligne, selon les drapeaux utilisés.$
: Le signe dollar correspond à la fin d'une chaîne ou d'une ligne, également dépendant des drapeaux utilisés.(...)
: Les parenthèses sont utilisées pour grouper plusieurs caractères en une seule unité et pour capturer les correspondances pour une utilisation ultérieure.
Opérations
- Classes de caractères :
[a-z]
correspond à n'importe quelle lettre minuscule. - Quantificateurs :
{2,4}
appliqué après un caractère ou un groupe signifie "apparaît entre 2 et 4 fois". - Assertions :
^
et$
sont des ancres qui correspondent respectivement au début et à la fin d'une ligne.
Drapeaux
Les expressions régulières peuvent être modifiées par des drapeaux qui changent leur comportement,
- comme
i
pour ignorer la casse, - ou
g
pour rechercher globalement toutes les occurrences.
Rôles du caractère antislash \
Voici les principaux rôles du caractère antislash \
dans les expressions régulières :
-
Échappement de métacaractères : Si vous voulez rechercher un métacaractère comme un caractère littéral, vous devez le précéder d'un backslash. Par exemple, pour rechercher un point
.
dans une chaîne, vous devez utiliser\.
dans votre expression régulière, car le point seul a la signification spéciale de correspondre à n'importe quel caractère. -
Séquences d'