Modulelessen (2/4)
Negatieve vooruitblik: `(?!...)`
De negatieve vooruitkijk (?!...) is het donkere zusje van de positieve vooruitblik:
het vereist dat het gegeven patroon NIET de huidige positie volgt. Het is
nog steeds zero-width: er wordt geen karakter verbruikt.
Pattern: \d+(?! euro)
Sample: Prezzo 100 euro, sconto 25 euro, totale 75 dollari.
^^Alleen 75 komt overeen, omdat dit de enige reeks cijfers is die NIET wordt gevolgd door
BESCHERMD_INLINE_2. De cijfers 100 en 25 worden gevolgd door euro en zijn
uitgesloten.
Typische negatieve vooruitkijkpatronen
^(?!.*errore).*$-- een regel die NIET het woord "fout" bevat.\b(?!the\b)\w+\b-- een woord dat niettheis.(?!\s)-- de huidige positie is GEEN witruimte (handig als "trim").
Pattern: ^(?!.*\.bak$).*$
Sample (multiline with flag m):
foto.jpg
backup.bak
documento.txt
Match: foto.jpg, documento.txt (excludes backup.bak)Geavanceerde uitsluitingen via negatieve vooruitkijk
De negatieve lookahead (?!...) is essentieel voor het implementeren van uitsluitingslogica (zoals het verifiëren dat een wachtwoord geen woordenboekwoorden bevat of dat een ID geen gereserveerd trefwoord is, zoals class of function).
Probeer het
Zoek elk getal dat NIET gevolgd wordt door 'euro' (dus exclusief de europrijzen).
Toon hint
Gebruik (?! ...) om te zeggen 'mag NIET volgen'. De reeks 'euro' mag niet daarna verschijnen.
Oplossing beschikbaar na 3 pogingen
Oefening beoordelen
Zoek elk woord van minimaal 3 letters dat NIET 'de' is (niet hoofdlettergevoelig).
Toon hint
Direct na \\b opent u een negatieve lookahead (?!the\\b) die alleen het woord the uitsluit.
Oplossing beschikbaar na 3 pogingen
Extra uitdaging
Find all words consisting of letters that do not contain the letter `x` at any position (e.g. match `test`, `game` but not `extra`, `box`).
Toon hint
Gebruik een negatieve lookahead (?!\\w*x) direct na de woordgrens \\b.
Oplossing beschikbaar na 3 pogingen