Skip to main content
Workday User Guide
Laatst bijgewerkt: 2023-06-23
Reguliere kwantoren

Reguliere kwantoren

Kwantificatorconstructies

Met kwantoren wordt aangegeven hoe vaak de voorgaande reguliere-expressieconstructie moet matchen. De klassen van kwantoren zijn:
  • Hebzuchtig
  • Terughoudend
  • Possessive
Het verschil tussen hebzuchtige, terughoudende en bezittelijke kwantoren is het deel van de tekenreeks dat moet worden geprobeerd voor de eerste match en hoe het opnieuw moet worden geprobeerd als de eerste poging geen match oplevert.
De kwantoren zijn standaard
greedy
. Een hebzuchtige kwantor probeert eerst een match te maken met de volledige invoertekenreeks. Als dat een match oplevert, wordt de match als geslaagd beschouwd en kan de engine doorgaan naar de volgende construct in de reguliere expressie. Als de eerste poging geen match oplevert, wordt één teken tegelijk teruggetrokken totdat er een match wordt gevonden. Een hebzuchtige kwantor controleert dus op mogelijke overeenkomsten in de volgorde van de langst mogelijke invoertekenreeks tot de kortst mogelijke invoertekenreeks, waarbij recursief van rechts naar links wordt geprobeerd.
Toevoegen van
?
(vraagteken) voor een hebzuchtige kwantificator maakt het
terughoudend met
. Een onwillige kwantor probeert eerst een match te maken vanaf het begin van de invoertekenreeks, te beginnen met het kortst mogelijke deel van de tekenreeks dat matcht met de regex-constructie. Als dat een match oplevert, wordt de match als geslaagd beschouwd en kan de engine doorgaan naar de volgende construct in de reguliere expressie. Als de eerste poging geen match oplevert, voegt de engine één teken per keer toe totdat er een match wordt gevonden. Een onwillige kwantor controleert dus op mogelijke overeenkomsten in de volgorde van de kortst mogelijke invoertekenreeks tot de langst mogelijke invoertekenreeks, waarbij recursief van links naar rechts wordt geprobeerd.
Toevoegen van
+
(plusteken) in een hebzuchtige kwantor maakt het
bezitterig
. Een bezittelijke kwantor is als een hebzuchtige kwantor bij de eerste poging (er wordt geprobeerd een match te maken met de hele invoertekenreeks). Het verschil is dat, in tegenstelling tot een hebzuchtige kwantor, een bezittelijke kwantor een kortere tekenreeks niet opnieuw probeert als er geen match wordt gevonden. Als de eerste match mislukt, rapporteert de bezittelijke kwantificator een mislukte match. Er worden geen pogingen meer ondernomen.
Hebzuchtige constructie
Aarzelende constructie
Bezittelijke constructie
Omschrijving
Voorbeeld
?
??
?+
Komt één keer of helemaal niet overeen met het vorige teken of de vorige constructie.
st?on
komt overeen met 'son' in 'johnson' en 'ston' in 'johnston', maar niets in 'clinton' of 'versie'
*
*?
*+
Komt overeen met het vorige teken of de construct van nul of meer keer.
if*
komt overeen met 'if', 'iff' in 'diff' of 'i' in 'print'
+
+?
++
Komt één of meer keer overeen met het vorige teken of de vorige constructie.
if+
komt overeen met 'if', 'iff' in 'diff', maar niets in 'print'
{n}
{n}?
{n}+
Komt exact
n
keer overeen met het vorige teken of de vorige constructie.
o{2}
komt overeen met 'oo' in 'lookup' en de eerste 2 cijfers in 'fooooo', maar niets in 'mount'
{n,}
{n,}?
{n,}+
Komt ten minste
n
keer overeen met het vorige teken of de vorige constructie.
o{2,}
komt overeen met 'oo' in 'lookup' met alle vijf de o's in 'fooooo', maar niets in 'mount'
{n,m}
{n,m}?
{n,m}+
Komt ten minste
n
keer overeen met het vorige teken of vorige concept, maar niet meer dan
m
keer.
F{2,4}
komt overeen met 'FF' in '#FF0000' en de laatste 4 F's in '#FFFFFF'