Direct naar de hoofdinhoud
Module 1 · Les 4 van 44/32 in de cursus~10 min
Modulelessen (4/4)

Ontsnappen aan metakarakters

Sommige tekens in regex hebben een speciale betekenis: ze worden genoemd metatekens. Als u het letterlijke karakter wilt matchen (bijvoorbeeld een real ., een echte +, een echte haakje) moet je ze vooraf laten gaan met een backslash \, waardoor ze ontsnappen.

De metakarakters die u moet onthouden zijn twaalf:

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

(Het / is niet echt een engine-metateken, maar moet worden geëscaped in de letterlijke JavaScript-notatie /.../.)

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

Hier ontsnappen we aan $ (anker aan het einde van de tekenreeks) en . (wildcard) om overeen te komen met de letterlijke tekens in het prijsformaat "dollar + getal + punt + twee cijfers".

Dubbele backslash in JS-tekenreeksen

Wanneer u een patroon in een JavaScript-string schrijft (zoals u doet in onze oefeningen) moet de backslash verdubbeld zijn. De JS-tekenreeks '\\d' bevat twee tekens (\ en d) en is precies het regex-patroon \d.

JS
const re1 = /\d+/; // literal notation: a single backslash
const re2 = new RegExp('\\d+'); // string: double backslash

De cursuseditor toont het patroon al gedecodeerd (je ziet een single \d); je hoeft zelf niets te verdubbelen.

De 12 speciale metakarakters

De tekens met speciale betekenissen in de engine zijn precies 12: \\\ ^ $ . | ? * + ( ) [ {. Als u ze als letterlijke tekst wilt matchen, moet u ze vooraf laten gaan door een backslash. In sommige omgevingen (bijvoorbeeld niet-onbewerkte JS-tekenreeksen) moet u mogelijk de backslash verdubbelen (\\\\).

Probeer het

Oefening#regex.m1.l4.e1
Pogingen: 0Laden…

Vind elke prijs in het `$N.NN`-formaat (dollar, een of meer cijfers, punt, twee cijfers). Vergeet niet om `$` en `.` te escapen.

Editor laden…
Toon hint

$ moet worden geëscaped als \\$, de punt als \\. - anders komt de stip met alles overeen.

Oplossing beschikbaar na 3 pogingen

Oefening beoordelen

Oefening#regex.m1.l4.e2
Pogingen: 0Laden…

Zoek elk letterlijk vraagteken `?` in de tekst. `?` is een metateken: er moet aan worden ontsnapt.

Editor laden…
Toon hint

Zonder ontsnapping? zou een kwantificator zijn (module 2). Zet er een \\ voor.

Oplossing beschikbaar na 3 pogingen

Extra uitdaging

Oefening#regex.m1.l4.e3
Pogingen: 0Laden…

Find all occurrences of `.tar.gz` in the text, ensuring that the dots are matched literally.

Editor laden…
Toon hint

Plaats vóór elke punt een backslash om eraan te ontsnappen.

Oplossing beschikbaar na 3 pogingen