De 'of'-opdracht in reguliere expressies van PHP
In deze les behandelen we de opdracht
|, die een krachtigere
variant van OF is vergeleken met
de opdracht []. Deze opdracht maakt het mogelijk
om de reguliere expressie in meerdere delen te splitsen.
Het gezochte kan dan voldoen aan het ene
deel van de reguliere expressie, of aan het andere. Laten we
dit bekijken aan de hand van voorbeelden.
Voorbeeld
In dit voorbeeld is het zoekpatroon als volgt: drie
letters 'a' of drie letters 'b':
<?php
$str = 'aaa bbb abb';
$res = preg_replace('#a{3}|b{3}#', '!', $str);
?>
Het resultaat in de variabele is:
'! ! abb'
Voorbeeld
In dit voorbeeld is het zoekpatroon als volgt: drie
letters 'a' of van 1 of meer
letters 'b':
<?php
$str = 'aaa bbb bbbb bbbbb axx';
$res = preg_replace('#a{3}|b+#', '!', $str);
?>
Het resultaat in de variabele is:
'! ! ! ! axx'
Voorbeeld
In dit voorbeeld is het zoekpatroon als volgt: één of meer letters of drie cijfers:
<?php
$str = 'a ab abc 1 12 123';
$res = preg_replace('#[a-z]+|\d{3}#', '!', $str);
?>
Het resultaat in de variabele is:
'! ! ! 1 12 !'
Voorbeeld
De verticale streep kan de reguliere expressie niet alleen in twee delen splitsen, maar in elk gewenst aantal delen:
<?php
$str = 'aaa bbb ccc ddd';
$res = preg_replace('#a+|b+|c+#', '!', $str);
?>
Het resultaat in de variabele is:
'! ! ! ddd'
Voorbeeld
Als de verticale streep binnen ronde haakjes staat,
dan werkt 'of' alleen binnen
deze haakjes. Laten we als voorbeeld strings vinden
volgens het volgende patroon: aan het begin staat
of 'a', of 'b' één of meer
keer, en daarna twee letters 'x':
<?php
$str = 'axx bxx bbxx exx';
$res = preg_replace('#(a|b+)xx#', '!', $str);
?>
Het resultaat in de variabele is:
'! ! ! exx'
Praktische opdrachten
Gegeven is de string:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Schrijf een reguliere expressie die strings vindt
volgens het patroon: aan de randen staan de letters 'a',
en daartussen - of de letter 'e' elk
aantal keren of de letter 'x' elk
aantal keren.
Gegeven is de string:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Schrijf een reguliere expressie die strings vindt
volgens het patroon: aan de randen staan de letters 'a',
en daartussen - of de letter 'e' twee keer
of de letter 'x' elk aantal keren.