Passer au contenu principal
eLearner.app
Module 1 · Leçon 4 sur 44/32 dans le cours~10 min
Leçons du module (4/4)

Échappement des méta-caractères

Certains caractères dans les regex ont une signification spéciale : ils sont appelés méta-caractères. Si vous souhaitez faire correspondre le caractère littéral (par exemple un vrai ., un vrai +, une vraie parenthèse), vous devez les précéder d'une barre oblique inverse \, ce qui les échappe.

Les méta-caractères à retenir sont au nombre de douze :

Code
.  *  +  ?  ^  $  |  \  (  )  [  ]  {  }  /

(Le / n'est pas vraiment un méta-caractère du moteur, mais il doit être échappé dans la notation littérale JavaScript /.../.)

Code
Pattern: \$\d+\.\d\d
Sample:  Prezzi: $9.99, $12.50, totale $22.49.
                 ^^^^^  ^^^^^^         ^^^^^^

Ici, nous échappons $ (ancre de fin de chaîne) et . (caractère joker) pour faire correspondre les caractères littéraux dans le format de prix "dollar + nombre + point + deux chiffres".

Double barre oblique inverse dans les chaînes JS

Lorsque vous écrivez un motif dans une chaîne JavaScript (comme dans nos exercices), la barre oblique inverse doit être doublée. La chaîne JS '\\d' contient deux caractères (\ et d) et correspond exactement au motif de regex \d.

JS
const re1 = /\d+/; // notation littérale : une seule barre oblique inverse
const re2 = new RegExp('\\d+'); // chaîne : double barre oblique inverse

L'éditeur de cours affiche le motif déjà décodé (vous voyez un seul \d) ; vous n'avez pas à doubler quoi que ce soit vous-même.

Les 12 méta-caractères spéciaux

Les caractères ayant une signification particulière dans le moteur sont exactement 12 : \\ ^ $ . | ? * + ( ) [ {. Si vous souhaitez les faire correspondre en tant que texte littéral, vous devez les faire précéder d'une barre oblique inverse. Dans certains environnements (comme les chaînes JS non brutes), vous devrez peut-être doubler la barre oblique inverse (\\\\).

À vous de jouer

Exercice#regex.m1.l4.e1
Tentatives : 0Chargement…

Trouvez chaque prix au format `$N.NN` (dollar, un ou plusieurs chiffres, point, deux chiffres). N'oubliez pas d'échapper `$` et `.`.

Chargement de l'éditeur…
Afficher l'indice

$ doit être échappé comme \$, le point comme \. - sinon le point correspond à n'importe quoi.

Solution disponible après 3 tentatives

Exercice de révision

Exercice#regex.m1.l4.e2
Tentatives : 0Chargement…

Trouvez chaque point d'interrogation littéral `?` dans le texte. `?` est un méta-caractère : il doit être échappé.

Chargement de l'éditeur…
Afficher l'indice

Sans échappement, ? serait un quantificateur (module 2). Mettez un \ devant.

Solution disponible après 3 tentatives

Défi supplémentaire

Exercice#regex.m1.l4.e3
Tentatives : 0Chargement…

Trouvez toutes les occurrences de `.tar.gz` dans le texte, en veillant à ce que les points correspondent littéralement.

Chargement de l'éditeur…
Afficher l'indice

Insérez une barre oblique inverse avant chaque point pour l'échapper.

Solution disponible après 3 tentatives