Modulelessen (3/4)
Kijk achter: `(?<=...)` `(?<!...)`
Lookbehinds zijn het spiegelbeeld van lookaheads: ze kijken voor de huidige positie, nog steeds met een breedte van nul.
(?<=...)-- positieve lookbehind: het patroon moet voorafgaan.(?<!...)-- negatieve lookbehind: het patroon mag NIET voorafgaan.
Pattern: (?<=\$)\d+
Sample: Costo $100, sconto -25, totale $75.
^^^ ^^De $ zit niet in de match, maar werkt als voorwaarde: alleen cijfers
voorafgegaan door de match met het dollarteken.
Negatieve blik achterom
Pattern: (?<!\w)\d+
Sample: Codice abc123 e numero 456.
^^^(?<!\w) vereist dat er vóór de cijfers GEEN woordteken staat:
abc123 is uitgesloten (vóór 123 is er c, een \w), 456 komt overeen (vóór
er is een spatie).
Belangrijk verschil versus niet-vangende groep
\\$\\d+ matches "$100": the match includes the dollar sign.
(?<=\\$)\\d+ matches "100": the match contains ONLY the digits.Als u de "schone" waarde zonder het voorvoegsel wilt extraheren, lookbehind is de juiste keuze.
Lookbehind-compatibiliteit in JavaScript
Positieve (?<=...) en negatieve (?<!...) lookbehind controleren wat er voorafgaat aan de huidige positie. In JavaScript worden ze ondersteund vanaf ES2018; in oudere browsers of oudere Node.js-engines zouden ze syntaxiscompilatiefouten veroorzaken.
Probeer het
Haal alleen het numerieke bedrag (zonder het $-teken) uit de prijzen in de tekst.
Toon hint
Verplaats \\$ binnen een positieve lookbehind (?<=\\$): een positievoorwaarde, geen onderdeel van de wedstrijd.
Oplossing beschikbaar na 3 pogingen
Oefening beoordelen
Vind elke reeks cijfers die NIET wordt voorafgegaan door een letter of cijfer (d.w.z. 'geïsoleerde' cijfers, geen delen van code zoals `abc123`).
Toon hint
Gebruik een negatieve lookbehind (?<!\\w) om uit te sluiten dat er een letter of cijfer voor staat.
Oplossing beschikbaar na 3 pogingen
Extra uitdaging
Find only the digits of negative numbers (digits preceded by the `-` sign), excluding the minus sign from the match.
Toon hint
Verplaats het minteken - binnen een positieve lookbehind (?<=-).
Oplossing beschikbaar na 3 pogingen