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:
. * + ? ^ $ | \ ( ) [ ] { } /(Het / is niet echt een engine-metateken, maar moet worden geëscaped in
de letterlijke JavaScript-notatie /.../.)
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.
const re1 = /\d+/; // literal notation: a single backslash
const re2 = new RegExp('\\d+'); // string: double backslashDe 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
Vind elke prijs in het `$N.NN`-formaat (dollar, een of meer cijfers, punt, twee cijfers). Vergeet niet om `$` en `.` te escapen.
Toon hint
$ moet worden geëscaped als \\$, de punt als \\. - anders komt de stip met alles overeen.
Oplossing beschikbaar na 3 pogingen
Oefening beoordelen
Zoek elk letterlijk vraagteken `?` in de tekst. `?` is een metateken: er moet aan worden ontsnapt.
Toon hint
Zonder ontsnapping? zou een kwantificator zijn (module 2). Zet er een \\ voor.
Oplossing beschikbaar na 3 pogingen
Extra uitdaging
Find all occurrences of `.tar.gz` in the text, ensuring that the dots are matched literally.
Toon hint
Plaats vóór elke punt een backslash om eraan te ontsnappen.
Oplossing beschikbaar na 3 pogingen