Påståenden

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 ^Peter matchar 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\b matchar 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\B matchar 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å)kaka matchar 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 (&quot;+)[^&quot;]*\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.