Direct naar de hoofdinhoud
Module 5 · Les 3 van 419/32 in de cursus~8 min
Modulelessen (3/4)

Ontkenning: `[^...]`

Plaats een dakje ^ als eerste teken tussen haakjes keert de klasse om: het komt overeen met elk karakter behalve de vermelde karakters.

Code
Pattern: [^aeiou]
Sample:  ciao mondo
          ^   ^^  ^

[^aeiou] komt overeen met medeklinkers, spaties, leestekens, cijfers\u2026 alles wat is geen een klinker.

Typische voorbeelden

  • [^\s] -- elk "niet-spatie"-teken (equivalent aan \S).
  • [^0-9] -- alles dat geen cijfer is (equivalent aan \D).
  • [^"]+ -- "een reeks tekens die geen dubbele aanhalingstekens zijn" (handig om inhoud tussen aanhalingstekens extraheren).
Code
Pattern: "([^"]+)"
Sample:  Il libro "Il nome della rosa" e' famoso.

De groep ([^"]+) legt alles tussen aanhalingstekens vast stoppend vóór de volgende ": het is een klassieke truc om de hebzuchtig versus lui probleem.

Ontkenning en alternatieve wildcards

De genegeerde klasse [^...] gebruikt precies één teken dat GEEN deel uitmaakt van de vermelde set. Het is een krachtig hulpmiddel om te voorkomen dat de engine voorbij kritische scheidingstekens loopt, waardoor ReDoS wordt vermeden die wordt veroorzaakt door oneindige backtracking-lussen.

Probeer het

Oefening#regex.m5.l3.e1
Pogingen: 0Laden…

Extraheer de inhoud van elke tekenreeks tussen dubbele aanhalingstekens, zonder de aanhalingstekens zelf vast te leggen.

Editor laden…
Toon hint

Vervang .+ door [^"]+: op deze manier stopt de match bij het volgende citaat.

Oplossing beschikbaar na 3 pogingen

Oefening beoordelen

Oefening#regex.m5.l3.e2
Pogingen: 0Laden…

Vind elk woord dat ALLEEN uit medeklinkers bestaat (geen klinkers, geen cijfers, geen symbolen).

Editor laden…
Toon hint

Binnen de haakjes kun je klinkerontkenning combineren met \\W (niet-woord) en \\d (cijfers).

Oplossing beschikbaar na 3 pogingen

Extra uitdaging

Oefening#regex.m5.l3.e3
Pogingen: 0Laden…

Match reeksen van een of meer tekens, waarbij spaties en komma's expliciet worden uitgesloten.

Editor laden…
Toon hint

Gebruik [^\\s,] met de + kwantor.

Oplossing beschikbaar na 3 pogingen