Operátory opakovania znakov v regulárnych výrazoch
Nastávajú situácie, keď chceme určiť,
že znak sa opakuje daný počet krát.
Ak poznáme presný počet opakovaní,
môžeme ho jednoducho napísať viackrát
- #aaaa#. Ale čo robiť, ak chceme
povedať niečo také: opakovať jeden alebo viac
krát?
Na to existujú operátory (kvantifikátory)
opakovania: plus + (jeden alebo viac krát),
hviezdička * (nula alebo viac krát) a
otáznik ? (nula alebo jeden krát). Tieto
operátory pôsobia na znak, ktorý stojí pred nimi.
Pozrime sa na prácu týchto operátorov na príkladoch.
Príklad
Nájdeme všetky podreťazce podľa vzoru písmeno
'x', písmeno 'a' jeden alebo viac
krát, písmeno 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa+x#', '!', $str);
?>
Výsledkom do premennej sa zapíše nasledovné:
'xx ! ! ! xbx'
Príklad
Nájdeme všetky podreťazce podľa vzoru písmeno
'x', písmeno 'a' nula alebo viac
krát, písmeno 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa*x#', '!', $str);
?>
Výsledkom do premennej sa zapíše nasledovné:
'! ! ! ! xbx'
Príklad
Nájdeme všetky podreťazce podľa vzoru písmeno
'x', písmeno 'a' nula alebo jeden
krát, písmeno 'x':
<?php
$str = 'xx xax xaax xbx';
$res = preg_replace('#xa?x#', '!', $str);
?>
Výsledkom do premennej sa zapíše nasledovné:
'! ! xaax xbx'
Praktické úlohy
Daný reťazec:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Napíšte regulárny výraz, ktorý nájde reťazce
podľa vzoru: písmeno 'a', písmeno 'b'
jeden alebo viac krát, písmeno 'a'.
Daný reťazec:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Napíšte regulárny výraz, ktorý nájde reťazce
podľa vzoru: písmeno 'a', písmeno 'b'
nula alebo viac krát, písmeno 'a'.
Daný reťazec:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Napíšte regulárny výraz, ktorý nájde reťazce
podľa vzoru: písmeno 'a', písmeno 'b'
jeden krát alebo žiadny, písmeno 'a'.
Daný reťazec:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Napíšte regulárny výraz, ktorý nájde reťazce
'aa', 'aba', 'abba',
'abbba', a nezachytí 'abca'
a 'abea'.