Påståenden gör att ett reguljärt uttryck bara matchar under vissa kontrollerade omständigheter.
Ett påstående behöver inte ett tecken för att matcha, utan undersöker istället omgivningen runt en möjlig matchning innan den erkänns. Påståendet ordgräns försöker till exempel inte hitta ett tecken som inte ingår i ett ord intill ett ord-tecken på platsen, utan kontrollerar istället att det inte finns ett ord-tecken. Det här betyder att påståendet matchar där det inte finns något tecken alls, dvs. vid slutet på söksträngen.
Vissa påståenden har verkligen ett mönster som ska matcha, men den delen av strängen som matchar kommer inte att ingå i resultatet för matchningen av hela uttrycket.
Reguljära uttryck som de dokumenteras här stöder följande påståenden:
^(hatt: början på strängen)Matchar början på söksträngen.
Uttrycket
^Petermatchar vid ”Peter” i strängen ”Peter, hej då!” men inte ”Hej, Peter!”.$(slutet på strängen)Matchar slutet på söksträngen.
Uttrycket
du\?$matchar det sista du i strängen ”Du gjorde det väl inte, eller var det verkligen du?” men ingenstans i ”Du gjorde det väl inte, eller hur?”.\b(ordgräns)Matchar om det finns ett ordtecken på ena sidan och något annat än ett ordtecken på andra sidan.
Det här är användbart för att hitta slutet på ord, till exempel för både början och slutet för att hitta ett helt ord. Uttrycket
\bin\bmatchar ett ensamt ”in” i strängen ”Han kom in genom ingången”, men inte det ”in” som finns i ”ingången”.\B(icke ordgräns)Matchar överallt där ”\b” inte gör det.
Det här betyder att det matchar till exempel inne i ord: Uttrycket
\Bin\Bmatchar in i ”minne” men inte i ”ingång” eller ”Han kom in genom fönstret”.(?=MÖNSTER)(Positiv sökning framåt)Ett påstående som söker framåt tittar på strängen som följer en möjlig matchning. Den positiva sökningen förhindrar att strängen matchar om inte texten som följer den möjliga matchningen matchar MÖNSTER i påståendet, men texten som matchas av det ingår inte i resultatet.
Uttrycket
vakt(?=\w)matchar för ”vakt” in ”vaktmästare” men inte i ”Han är en vakt!”(?!MÖNSTER)(Negativ sökning framåt)Den negativa sökningen framåt förhindrar en möjlig matchning från att bekräftas om den följande delen av söksträngen matchar sitt MÖNSTER.
Uttrycket
const \w+\b(?!\s*&)matchar vid ”const char” i strängen ”const char* x” medan den inte kan matcha ”const QString” i ”const QString& y” eftersom ”&” matchar mönstret i den negativa sökningen framåt.(?<=MÖNSTER)(Positiv sökning bakåt)Sökning bakåt har samma effekt som sökning framåt, men fungerar baklänges. Ett påstående som söker bakåt tittar på strängen som föregår en möjlig matchning. Den positiva sökningen bakåt matchar bara en sträng om den föregås av MÖNSTER i påståendet, men texten som matchas av det ingår inte i resultatet.
Uttrycket
(?<=små)kakamatchar vid ”kaka” om det föregås av ”små” (i ”småkaka” men inte av ”ostkaka” eller för bara ”kaka”).(?<!MÖNSTER)(Negativ sökning bakåt)Den negativa sökningen bakåt förhindrar en möjlig matchning från att bekräftas om den föregående delen av söksträngen matchar sitt MÖNSTER.
Uttrycket
(?<![\w\.])[0-9]+matchar vid ”123” i strängarna ”=123” och ”-123” medan det inte kan matcha ”123” i ”.123” eller ”ord123”.(MÖNSTER)(Spara grupp)Delmönstret inom parenteser lagras och blir ihågkommet, så att det kan användas i bakåtreferenser. Exempelvis matchar uttrycket
("+)[^"]*\1""""text""""och"text".Se avsnittet Spara text som matchar (bakåtreferenser) för mer information.
(?:MÖNSTER)(Spara inte grupp)Delmönstret inom parenteser lagras inte och blir inte ihågkommet. Det är bättre att alltid använda icke-lagrande grupper om det som platsmarkörerna inte ska användas.