Sümbolite kordusoperaatorid
On olukordi, kus soovime näidata,
et sümbol kordub etteantud arv
kordi. Kui teame täpset korduste arvu,
võime selle lihtsalt mitu korda kirjutada
- #aaaa#. Aga mis teha, kui tahame
öelda järgmist: korda üks või rohkem
korda?
Selleks on olemas (kvantifikaatorid)
kordamiseks: pluss + (üks või rohkem korda),
tärn * (null või rohkem korda) ja
küsimärk ? (null või üks kord). Need
operaatorid mõjuvad sümbolile, mis
seisab nende ees.
Vaatame nende operaatorite tööd näidete varal.
Näide
Leiame kõik alamstringid mustri järgi täht
'x', täht 'a' üks või rohkem
korda, täht 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa+x#', '!', $str);
?>
Tulemusena kirjutatakse muutujasse järgmine:
'xx ! ! ! xbx'
Näide
Leiame kõik alamstringid mustri järgi täht
'x', täht 'a' null või rohkem
korda, täht 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa*x#', '!', $str);
?>
Tulemusena kirjutatakse muutujasse järgmine:
'! ! ! ! xbx'
Näide
Leiame kõik alamstringid mustri järgi täht
'x', täht 'a' null või üks
kord, täht 'x':
<?php
$str = 'xx xax xaax xbx';
$res = preg_replace('#xa?x#', '!', $str);
?>
Tulemusena kirjutatakse muutujasse järgmine:
'! ! xaax xbx'
Praktilised ülesanded
Antud string:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Kirjutage regulaaravaldis, mis leiab stringid
vastavalt mustrile: täht 'a', täht 'b'
üks või rohkem korda, täht 'a'.
Antud string:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Kirjutage regulaaravaldis, mis leiab stringid
vastavalt mustrile: täht 'a', täht 'b'
null või rohkem korda, täht 'a'.
Antud string:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Kirjutage regulaaravaldis, mis leiab stringid
vastavalt mustrile: täht 'a', täht 'b'
üks kord või mitte ühtegi, täht 'a'.
Antud string:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Kirjutage regulaaravaldis, mis leiab stringid
'aa', 'aba', 'abba',
'abbba', ilma et haaraks 'abca'
ja 'abea'.