Krulhaken in reguliere expressies van PHP
Operatoren +, *, ? zijn goed,
maar met hun hulp kan men geen specifiek
aantal herhalingen opgeven. In dit geval komt de
operator {} te hulp.
Hij werkt als volgt: {5}
- vijf herhalingen, {2,5} - herhaalt
zich van twee tot vijf (beide inclusief), {2,}
- herhaalt zich twee keer of vaker.
Voorbeeld
In dit voorbeeld ziet het zoekpatroon er als volgt uit:
letter 'x', letter 'a' een
of twee keer, letter 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,2}x#', '!', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'xx ! ! xaaax'
Voorbeeld
In dit voorbeeld ziet het zoekpatroon er als volgt uit:
letter 'x', letter 'a' twee
keer of vaker, letter 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{2,}x#', '!', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'xx xax ! !'
Voorbeeld
In dit voorbeeld ziet het zoekpatroon er als volgt uit:
letter 'x', letter 'a' drie
keer, letter 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{3}x#', '!', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'xx xax xaax !'
Voorbeeld
In dit voorbeeld ziet het zoekpatroon er als volgt uit:
letter 'a' tien keer:
<?php
$str = 'aaa aaaaaaaaaa aaa';
$res = preg_replace('#a{10}#', '!', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'aaa ! aaa'
Voorbeeld
In dit voorbeeld wilde de auteur van de code het volgende patroon:
letter 'x', letter 'a' drie
keer of minder, letter 'x',
maar helaas werkt dit - {,3} - niet.
Men moet het expliciet aangeven:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,3}x#', '!', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'xx ! ! !'
Voorbeeld
Nul is ook toegestaan:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{0,3}x#', '!', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'! ! ! !'
Praktische opdrachten
Gegeven een string:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Schrijf een reguliere expressie die de strings
'abba', 'abbba', 'abbbba'
en alleen deze vindt.
Gegeven een string:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Schrijf een reguliere expressie die strings
van het type 'aba' vindt, waarin 'b'
minder dan drie keer voorkomt (inclusief).
Gegeven een string:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Schrijf een reguliere expressie die strings
van het type 'aba' vindt, waarin 'b'
meer dan vier keer voorkomt (inclusief).