Regular expressions - Deel 5

Deze pagina is op verzoek van een bezoeker teruggeplaatst.
De pagina is echter vrij oud en bevat veel afwerkingsfoutjes.
Gelieve hier rekening mee te houden.

Haakjes om te groeperen

Stel, we willen het vraagteken niet gebruiken voor 1 enkele letter, maar voor meerdere letters. Als je een vraagteken plaatst, wordt er normaalgezien enkel gekeken naar wat er vlak voor staat. Hiervoor bestaat een oplossing: groeperen door middel van haakjes:
/a(bcde)?f/
In het bovenstaande voorbeeld hoort het vraagteken bij (bcde).

Strings die aan dit patroon voldoen:

  • abcdef
  • xyzabcdef
  • abcdefxyz
  • yyxabcdefxyz
  • af
  • xyzaf
  • afxyz
  • yyxafxyz
Strings die niet voldoen aan dit patroon:
  • abccdef
  • abcdeg
  • fbcdea
  • fa
  • bcde
Haakjes kunnen in combinatie met zowat alles toegepast worden, ook met bijvoorbeeld accolades:
/(xyz){5,}/

Of nog leuker:

/(\.a{3,5}d.{4}[efg]{4}){2,3}/
Je zou in staat moeten zijn om de bovenstaande regex te kunnen begrijpen.

Alternation: ofwel dit, ofwel dat (|)

Met het | teken (op een US QWERTY en een US Dvorak-toetsenbord op de toets boven de enter, waar ook de backslash op staat) kan je zeggen dat 1 ding goed is, en een ander ding ook goed is: wat er voor het teken staat, of wat er achter staat.
/kat|pelikaan/
Hierbij is "kat" goed, en "pelikaan" ook goed. Iets anders is niet goed.

Als we nu het volgende willen: de letters "de ", gevolgd door kat OF pelikaan, gevolgd door " krabt", dan is het volgende niet wat we willen:

/de kat|pelikaan krabt/
Dit wordt namelijk geinterpreteerd als: "de kat" OFWEL "pelikaan krabt".

Hiervoor moeten we haakjes gebruiken:

/de (kat|pelikaan) krabt/
En dat doet wel wat we willen.

In plaats van "Ofwel dit, ofwel dat" kunnen we ook zeggen "ofwel dit, ofwel dit, ofwel dit, ofwel dit". BIjvoorbeeld:

/de (kat|pelikaan|poes|goudvis) krabt/
Dit betekent: de tekens "de ", gevolgd door OFWEL "kat" OFWEL "pelikaan" OFWEL "poes" OFWEL "goudvis", gevolgd door " krabt".

Begin en einde: \A en \Z, of ^ en $

/de kat .* van de trap/
Hierbij kan er tekst voorkomen voor "de kat". Een geldige string is dus ook "de hond en de kat krabt de krollen van de trap". Als we dat niet willen, moeten we opgeven dat er geen tekens voor mogen voorkomen. Dit kan je doen met \A of met een hoedje (^):
/\Ade kat .* van de trap/
/^de kat .* van de trap/
Geldig is nu:
  • de kat blablabla van de trap blehblehbleh
Maar dit niet meer:
  • blehblehbleh de kat blabla van de trap

Hetzelfde bestaat er voor "het einde": \Z of dollar ($).

/kat\Z/
/kat$/
Hierbij is elke string goed die op "kat" eindigt.

/\Ak.t/Z/
Hierbij zijn alle strings goed die beginnen met een k, dan eender welke letter hebben, en dan een t, en daarna mag er geen tekst meer zijn in de string.


Volgende pagina: Modifiers en haakjes