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
^Peterkomt 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\bkomt 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\Bkomt 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)cakezal 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
("+)[^"]*\1komt 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.