Les métacaractères

Parent Previous Next



Les métacaractères



Nous avons vu précédemment que la syntaxe des regex est définie par un certain nombre de caractères spéciaux, comme ^, $, [ et ], ou encore + et *. Ces caractères sont ce que l'on appelle des métacaractères, et en voici la liste complète :

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


Un problème se pose si on veut chercher la présence d'une accolade dans une chaîne de caractères. En effet, si on a ceci, la regex ne fonctionnera pas :

Chaîne

Regex

Résultat

Une accolade {comme ceci}

/accolade {comme ceci}/

false


C'est normal, car les accolades sont des métacaractères qui définissent un nombre de répétition : en clair, cette regex n'a aucun sens pour l'interpréteur Javascript ! Pour pallier ce problème, il suffit d'échapper les accolades au moyen d'un anti-slash :

/accolade \{comme ceci\}/


De cette manière, les accolades seront vues par l'interpréteur comme étant des accolades « dans le texte », et non comme des métacaractères. Il en va de même pour tous les métacaractères cités précédemment. Il faut même penser à échapper l'anti-slash avec… un anti-slash :

Chaîne

Regex

Résultat

Un slash / et un anti-slash \

// et un anti-slash \/

erreur de syntaxe

Un slash / et un anti-slash \

/\/ et un anti-slash \\/

true


Ici, pour pouvoir trouver le / et le \, il convient également de les échapper.


Il est à noter que si le logiciel que vous utilisez pour rédiger en Javascript fait bien son job, la première regex provoquera une mise en commentaire (à cause des deux / au début) : c'est un bon indicateur pour dire qu'il y a un problème. Si votre logiciel détecte aussi les erreurs de syntaxe, il peut vous être d'une aide précieuse.


Les métacaractères au sein des classes


Au sein d'une classe de caractères, il n'y a pas besoin d'échapper les métacaractères, à l'exception des crochets (qui délimitent le début et la fin d'une classe), du tiret (qui est utilisé pour définir un intervalle) et de l'anti-slash (qui sert à échapper).

Concernant le tiret, il existe une petite exception : il n'a pas besoin d'être échappé s'il est placé en début ou en fin de classe.


Ainsi, si on veut rechercher un caractère de a à z ou les métacaractères ! et ?, il faudra écrire ceci :

/[a-z!?]/


Et s'il faut trouver un slash ou un anti-slash, il ne faut pas oublier de les échapper :

/[a-z!?\/\\]/


Créé avec HelpNDoc Personal Edition: Générateur d'aides CHM gratuit

Site à deux balles