| |||||||||||||||
Reguliere expressies:Onderwerpen: |
Regular expressions - Deel 2
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. Character classesOK, we weten nu hoe we met reguliere expressies kunnen checken of een string voldoet aan een patroon, maar we hebben nog geen idee hoe dat patroon nu eigenlijk is opgebouwd. Tijd dus om dit wat uit te diepenStel, we willen weten of in een string het teken a, b, c of d voorkomt. Met andere woorden: als er "a" in voorkomt is het goed, als er "b" in voorkomt is het goed, als er "c" in voorkomt is het goed, als er "d" in voorkomt is het goed, en anders is het niet goed. Dit kunnen we zo doen:Perl:
$_='xyaz';
if (/[abcd]/){
print ("Ja!\n");
}else{
print ("Neen.\n");
}
PHP:
Dit zal "Ja!" afdrukken.Bij de volgende voorbeelden is er geen match, en zal er "Neen." worden afgedrukt.
if (preg_match ('/[abcd]/', 'xyaz')){
echo ("Ja!");
}else{
echo ("Neen.");
}
Perl:
$_='xyfz';
if (/[abcd]/){
print ("Ja!\n");
}else{
print ("Neen.\n");
}
PHP:
Het is logisch dat de bovenstaande expressie geen match geeft: in 'xyfz' komt helemaal geen a, geen b, geen c, en geen d in voor.Voorbeeldjes van strings die matchen met de reguliere expressie /[abcd]/
if (preg_match ('/[abcd]/', 'xyfz')){
echo ("Ja!");
}else{
echo ("Neen.");
}
/[abcd]x/Deze kan je interpreteren als volgt: alle strings zijn goed als er een letter a of een b of een c of een d in voorkomt EN die letter moet direct gevolgd zijn door de letter x.De volgende strings voldoen aan deze expressie:
/kat/Ik heb deze altijd beschreven als "als er het woord kat in voorkomt", maar de volgende beschrijving is veel correcter: als er de letter k in voorkomt, gevolgd door de letter a, gevolgd door de letter t. Dat klinkt misschien wat verder gezocht, maar als je op die manier denkt ga je reguliere expressies veel makkelijker kunnen begrijpen.Nog een nieuw voorbeeldje: /y[abcd]x/Je zou nu in staat moeten zijn om deze regular expression te begrijpen. Hij betekent: als er de letter y in voorkomt, gevolgd door ofwel de letter a ofwel de letter b ofwel de letter c ofwel de letter d, gevolgd door de letter x. Voorbeeldjes van strings die voldoen aan de regexp:
/[efg][hij]/Dit betekent: elke string waarin dit voorkomt: ofwel een letter e, ofwel een letter f, ofwel een letter g; gevolgd door ofwel een letter h, ofwel een letter i, ofwel een letter j.Voorbeeldjes van strings die hieraan voldoen:
/[efg]x[hij]/ /[efg]abc[hij]z/ Met zo een character class kan je ook zeggen: "alle tekens buiten dit en dit en dit". Dit kan gebeuren door een hoedje (accent circonflex: ^) te zetten voor de tekens. Bijvoorbeeld: als ik alle tekens wil goedkeuren, buiten a,b,c en d doe ik: /[^abcd]/Soms wordt het nogal lang om een volledige character class te schrijven. Als we bijvoorbeeld willen zeggen: alle letters van het alfabet, kunnen we dat zo doen: /[abcdefghijklmnopqrstuvwxyz]/Maar da's nogal langdradig. Dit is veel korter: /[a-z]/Het min-teken dient dus om een range aan te geven. Dit werkt ook: /[0-9]/Samen gebruiken kan ook: /[a-z0-9]/Voor een aantal van veelgebruikte character classes bestaan er standaardafkortingen:
Volgende pagina: Punt en escapen . \ |
||||||||||||||
| Copyright (C) 2001-2006 Willem Penninckx | |||||||||||||||