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 :
. * + ? ^ $ | \ ( ) [ ] { } /(Le / n'est pas vraiment un méta-caractère du moteur, mais il doit être échappé dans la notation littérale JavaScript /.../.)
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.
const re1 = /\d+/; // notation littérale : une seule barre oblique inverse
const re2 = new RegExp('\\d+'); // chaîne : double barre oblique inverseL'é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
Trouvez chaque prix au format `$N.NN` (dollar, un ou plusieurs chiffres, point, deux chiffres). N'oubliez pas d'échapper `$` et `.`.
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
Trouvez chaque point d'interrogation littéral `?` dans le texte. `?` est un méta-caractère : il doit être échappé.
Afficher l'indice
Sans échappement, ? serait un quantificateur (module 2). Mettez un \ devant.
Solution disponible après 3 tentatives
Défi supplémentaire
Trouvez toutes les occurrences de `.tar.gz` dans le texte, en veillant à ce que les points correspondent littéralement.
Afficher l'indice
Insérez une barre oblique inverse avant chaque point pour l'échapper.
Solution disponible après 3 tentatives