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)

Escape dei meta-caratteri

Alcuni caratteri in regex hanno un significato speciale: si chiamano meta-caratteri. Se vuoi matchare il carattere letterale (es. un . vero, un + vero, una parentesi vera) devi farli precedere da un backslash \, che li escapa.

I meta-caratteri da ricordare sono dodici:

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

(Il / non e' un meta-carattere del motore in se', ma va escapato nella notazione letterale /.../ di JavaScript.)

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

Qui escapiamo il $ (ancora di fine stringa) e il . (jolly) per matchare i caratteri letterali nel formato prezzo "dollaro + numero + punto + due cifre".

Doppio backslash nelle stringhe JS

Quando scrivi un pattern dentro a una stringa JavaScript (come fai nei nostri esercizi), il backslash dev'essere raddoppiato. La stringa JS '\\d' contiene due caratteri (\ e d) ed e' esattamente il pattern regex \d.

JS
const re1 = /\d+/; // notazione letterale: un solo backslash
const re2 = new RegExp('\\d+'); // stringa: doppio backslash

L'editor del corso mostra il pattern gia' decodificato (vedi un singolo \d); non devi raddoppiare nulla tu.

I 12 meta-caratteri speciali

I caratteri con un significato speciale nell'engine sono esattamente 12: \\\ ^ $ . | ? * + ( ) [ {. Se intendi matcharli come testo letterale, devi farli precedere da un backslash. In alcuni linguaggi o contesti (es. stringhe JS non grezze), potrebbe essere necessario raddoppiare il backslash (\\\\).

Prova tu

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

Trova ogni prezzo nel formato `$N.NN` (dollaro, una o piu' cifre, punto, due cifre). Ricorda di escapare `$` e `.`.

Chargement de l'éditeur…
Afficher l'indice

$ va escapato come \\$, il punto come \\. - altrimenti il punto matcha qualunque cosa.

Solution disponible après 3 tentatives

Esercizio di ripasso

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

Trova ogni punto interrogativo letterale `?` nel testo. `?` e' un meta-carattere: va escapato.

Chargement de l'éditeur…
Afficher l'indice

Senza escape, ? sarebbe un quantificatore (modulo 2). Mettigli un \\ davanti.

Solution disponible après 3 tentatives

Sfida aggiuntiva

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

Trova tutte le estensioni `.tar.gz` nel testo, assicurandoti che i punti siano trattati come caratteri letterali.

Chargement de l'éditeur…
Afficher l'indice

Inserisci un backslash prima di ogni punto per escaparlo.

Solution disponible après 3 tentatives