Zaviti oklepaji v regularnih izrazih PHP
Operatorji +, *, ? so dobri,
vendar z njimi ni mogoče določiti natančnega
števila ponovitev. V tem primeru vam bo na pomoč
prisel operator {}.
Deluje na naslednji način: {5}
- pet ponovitev, {2,5} - ponavlja se
od dveh do pet (oba vključno), {2,}
- ponavlja se dva ali večkrat.
Primer
V tem primeru je vzorec iskanja videti takole:
črka 'x', črka 'a' enkrat
ali dvakrat, črka 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,2}x#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'xx ! ! xaaax'
Primer
V tem primeru je vzorec iskanja videti takole:
črka 'x', črka 'a' dvakrat
ali večkrat, črka 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{2,}x#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'xx xax ! !'
Primer
V tem primeru je vzorec iskanja videti takole:
črka 'x', črka 'a' trikrat,
črka 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{3}x#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'xx xax xaax !'
Primer
V tem primeru je vzorec iskanja videti takole:
črka 'a' desetkrat:
<?php
$str = 'aaa aaaaaaaaaa aaa';
$res = preg_replace('#a{10}#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'aaa ! aaa'
Primer
V tem primeru je avtor kode želel tak vzorec:
črka 'x', črka 'a' trikrat
ali manj, črka 'x',
vendar, na žalost, to - {,3} - ne
deluje. Treba je navesti izrecno:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,3}x#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'xx ! ! !'
Primer
Ničla je prav tako dovoljena:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{0,3}x#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'! ! ! !'
Praktične naloge
Podan je niz:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Napišite regularni izraz, ki bo našel nize
'abba', 'abbba', 'abbbba'
in samo njih.
Podan je niz:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Napišite regularni izraz, ki bo našel nize
oblike 'aba', v katerih se 'b' pojavi
manj kot trikrat (vključno).
Podan je niz:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Napišite regularni izraz, ki bo našel nize
oblike 'aba', v katerih se 'b' pojavi
več kot štirikrat (vključno).