Påstande

Påstande tillader et regulært udtryk kun at match under visse kontrollerede betingelser.

En behøver ikke et tegn for at matche, den undersøger snarere omgivelserne for en mulig match før den anerkender den. For eksempel ordgrænse-påstanden forsøger ikke at finde et ikke ord-tegn overfor et på dens plads, i stedet sørger den for at der ikke er et ord-tegn. Dette betyder at påstanden kan matche hvor der ikke er noget tegn, dvs. ved slutningen af en søgt streng.

Visse påstande har rent faktisk ikke noget mønster at matche, men den del af strengmatchningen vil ikke blive en del af resultatet af matchningen for det fulde udtryk.

Regulære udtryk som dokumenteret her understøtter følgende udtryk:

^ (karet: begyndelsen af streng)

Matcher begyndelsen af den søgte streng.

Udtrykket ^Inger vil matche ved “Inger” i strengen “Inger, hej!” men ikke i “Hej, Inger!

$ (slutning af streng)

Matcher slutningen af den søgte streng.

Udtrykket du\?$ vil matche ved det sidste du i strengen “Du gjorde det ikke, gjorde du?” men ingen steder i “Du gjorde det ikke, vel?

\b (ordgrænse)

Matcher hvis der er et ord-tegn på den ene side og et ikke-ord-tegn på den anden.

Dette er nyttigt for at finde ord-afslutninger, for eksempel begge ender for at finde et helt ord. Udtrykket \ben\b vil matche det “en” der er for sig selv i strengen “Der var en der kom ind gennem vinduet”, men ikke det “en” der er i “gennem”.

\B (ikke-ord-grænse)

Matcher hvor “\b” ikke gør.

Det betyder at det for eksempel vil matche inde i ord: Udtrykket \Bel\B vil matche ved el i “heldig” men ikke i “alligevel” eller “Mon du elsker mig”.

(?=PATTERN) (Positiv fremadskuen)

En fremadskuende påstand kigger på den del af strengen der følger en mulig match. Den positive fremadskuen vil forhindre strengen i at matche hvis teksten der følger den mulige match ikke matcher et PATTERN i påstanden, men den tekst der matches derved vil ikke blive inkluderet i resultatet.

Udtrykket skole(?=\w) vil matche ved “skole” i “skolelærer” men ikke ved “Skulker du fra din skole?

(?!PATTERN) (Negativ fremadskuen)

Den negative fremadskuen forhindrer en mulig match i at blive anerkendt hvis den følgende del af den søgte streng ikke matcher dens PATTERN.

Udtrykket const \w+\b(?!\s*&) vil matche ved “const char” i strengen “const char* foo” men den ikke kan matche “const QString” i “const QString& bar” fordi “&” matcher den negative fremadskuen påstandsmønster.