Toekenningen

Toekenningen bieden de mogelijkheid om een reguliere expressie alleen te laten overeenkomen onder bepaalde gecontroleerde condities.

Een toekenning heeft geen teken nodig om mee overeen te komen, in plaats daarvan onderzoekt het de omgeving voor een mogelijke overeenkomst alvorens deze toe te kennen. Bijvoorbeeld de woordgrens toekenning probeert geen niet-woord-teken ten opzichte van een woordteken op zijn positie te vinden, in plaats daarvan moet er geen woordteken zijn. Dit betekent dat de toekenning overeen kan komen met iets waar geen teken is, bijv. aan het eind van een te zoeken tekenreeks.

Sommige toekenningen hebben in werkelijkheid een patroon waarmee overeen gekomen moet worden, maar het deel van de overeenkomst met de tekenreeks behoort niet bij een deel van het resultaat van overeenkomst met de volledige expressie.

Reguliere expressies zoals hier gedocumenteerd ondersteunt de volgende toekenningen:

^ (dakje: begin van de tekenreeks)

Komt overeen met het begin van de tekenreeks.

De expressie ^Peter komt overeen met Peter in de tekenreeks Peter, hey! maar niet in Hey, Peter!

$ (eind van de tekenreeks)

Komt overeen met het eind van de tekenreeks.

De expressie you\?$ komt overeen met de laatste you in de tekenreeks You didn't do that, did you? maar nergens in You didn't do that, right?

\b (woordgrens)

Komt overeen als er een woordteken is aan één kant en niet aan de andere kant.

Dit is nuttig om woordeinden te vinden, bijvoorbeeld beide einden om een heel woord te vinden. De expressie \bin\b komt overeen met het aparte in in de tekenreeks He came in through the window, maar niet met het in in window.

\B (niet-woordgrens)

Komt overeen waar \b dat niet doet.

Dit betekent dat het zal overeenkomen bijvoorbeeld in woorden: De expressie \Bin\B komt overeen in window maar niet in integer of I'm in love.

(?=PATROON) (Positief vooruitkijken)

Een vooruitkijktoekenning kijkt naar het deel van de tekenreeks die volgt op een mogelijke overeenkomst. Het positieve vooruitkijken voorkomt dat de tekenreeks overeenkomt als de tekst die volgt op de mogelijke overeenkomst niet overeenkomt met het PATROON van de toekenning, maar voorkomt dat de tekst daarmee overeenkomt en zal niet meegenomen worden in het resultaat.

De expressie handy(?=\w) komt overeen met handy in handyman maar niet in That came in handy!

(?!PATROON) (Negatieve vooruitblik)

Het negatieve vooruitkijken voorkomt dat de tekenreeks overeenkomt als de tekst die volgt op de mogelijke overeenkomst overeenkomt met het PATROON van de toekenning.

De expressie const \w+\b(?!\s*&) zal overeenkomen met const char in de tekenreeks const char* foo terwijl het niet kan overeenkomen met const QString in const QString& bar omdat de & overeenkomt met het patroon in de negatieve vooruitkijktoekenning.

(?<=PATROON) (Positief achteruit kijken)

Een achteruitkijktoekenning heeft hetzelfde effect als de vooruitkijk, maar werkt achterwaarts. Een achteruitkijktoekenning kijkt naar het deel van de vorige tekenreeks met een mogelijke overeenkomst. Het positieve achteruitkijken zal alleen overeenkomen met een tekenreeks als het voorafgegaan wordt door het PATROON van de toekenning, maar voorkomt dat de tekst daarmee overeenkomt en zal niet meegenomen worden in het resultaat.

De expressie (?<=cup)cake zal overeenkomen met cake als het volgt op cup (in cupcake maar niet in cheesecake of in alleen cake).

(?<!PATROON) (Negatieve achteruitblik)

Het negatieve achteruitkijken voorkomt dat de tekenreeks overeenkomt als het voorgaande deel van de zoektekst overeenkomt met het PATROON.

De expressie (?<![\w\.])[0-9]+ zal overeenkomen met 123 in de tekenreeksen =123 en -123 terwijl het niet kan overeenkomen met 123 in .123 of word123.

(PATROON) (Vanggroep)

Het subpatroon in de haakjes wordt gevangen en onthouden, zodat het gebruikt kan worden in achterwaartse referentie. Bijvoorbeeld, de expressie (&quot;+)[^&quot;]*\1 komt overeeen met """"tekst"""" en "tekst".

Zie de sectie Overeenkomende tekst vangen (achterwaartse referenties) voor meer informatie.

(?:PATROON) (Non-capturing groep)

Het subpatroon in de haakjes wordt niet gevangen en niet onthouden. Het heeft de voorkeur om altijd non-capturing groepen te gebruiken als de vangst niet zal worden gebruikt.