Herhalingsoperatoren voor karakters in regex
Er zijn situaties waarin we willen aangeven,
dat een karakter een bepaald aantal keer
wordt herhaald. Als we het exacte aantal herhalingen kennen,
dan kunnen we het gewoon meerdere keren schrijven
- #aaaa#. Maar wat te doen als we willen
zeggen: herhaal een of meer
keer?
Hiervoor bestaan er (kwantificatoren)
herhaling: plus + (een of meer keer),
sterretje * (nul of meer keer) en
vraagteken ? (nul of één keer). Deze
operatoren werken in op het karakter dat
ervoor staat.
Laten we de werking van deze operatoren bekijken aan de hand van voorbeelden.
Voorbeeld
Laten we alle substrings vinden volgens het patroon letter
'x', letter 'a' een of meer
keer, letter 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa+x#', '!', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'xx ! ! ! xbx'
Voorbeeld
Laten we alle substrings vinden volgens het patroon letter
'x', letter 'a' nul of meer
keer, letter 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa*x#', '!', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'! ! ! ! xbx'
Voorbeeld
Laten we alle substrings vinden volgens het patroon letter
'x', letter 'a' nul of één
keer, letter 'x':
<?php
$str = 'xx xax xaax xbx';
$res = preg_replace('#xa?x#', '!', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'! ! xaax xbx'
Praktische opdrachten
Gegeven een string:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Schrijf een regex die de strings vindt
volgens het patroon: letter 'a', letter 'b'
een of meer keer, letter 'a'.
Gegeven een string:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Schrijf een regex die de strings vindt
volgens het patroon: letter 'a', letter 'b'
nul of meer keer, letter 'a'.
Gegeven een string:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Schrijf een regex die de strings vindt
volgens het patroon: letter 'a', letter 'b'
een keer of geen, letter 'a'.
Gegeven een string:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Schrijf een regex die de strings
'aa', 'aba', 'abba',
'abbba' vindt, zonder 'abca'
en 'abea' te vangen.