Het extraheren van matches
De grouping metacharects hebben nog een tweede doel: het uit extraheren van een specifiek gematched gedeelte. Dit is erg handig om uit te zoeken wat gematched heeft, en om specifieke delen uit een string te halen. Voor elke groep is het deel dat gematched wordt een aparte slice in een array die je als derde argument in het preg_match commando kan opgeven.
Bijvoorbeeld:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?
preg_match("/(\d\d):(\d\d):(\d\d)/", $datum, $datum_array);
print_r($datum_array);
// [0] => uren
// [1] => minuten
// [2] => seconden
?>
preg_match("/(\d\d):(\d\d):(\d\d)/", $datum, $datum_array);
print_r($datum_array);
// [0] => uren
// [1] => minuten
// [2] => seconden
?>
Wanneer de groeperingen in een regexp zijn genesteld is de volgorde in de array de volgorde van de groep die het eerst geopend wordt.
Voor complexe voorbeelden zal hij als volgt matchen:
Dus als er een geldige waarde voor de regexp wordt gegevel zou in dit voorbeeld:
$array[1] gelijk zijn aan 'cd' of 'ef'.
Ook kan je matches gebruiken in de regex zelf!
Door backreferences te gebruiken: \1 \2 \3 etc. Kan je een de waarde van een gematchte groep gebruiken in de regex:
Zo zal:
Alle drieletterwoorden die achter elkaar stana matchen, bijvoorbeeld:
bow bow
yoo yoo
who who
etc.
Een voorbeeld van dit wanneer je dit tegen een woordenboek bestand zou matchen:
/^(\w\w\w\w|\w\w\w|\w\w|\w)\1$/
levert dit alle repeterende woorden op in het woordenboek.
beriberi
booboo
coco
mama
murmur
papa
« vorige pagina | volgende pagina »
Inhoudsopgave
- Voorwoord
- My First Regex
- Het gebruik van character classes
- Het een of het ander matchen
- Groeperen en hierarchisch matchen
- Het extraheren van matches
- Repeterende matches
- Disclaimer, bronvermelding, handige links, TODO