Cirtainie iekavas PHP regulārajās izteiksmēs
Operatori +, *, ? ir labi,
taču ar to palīdzību nevar norādīt konkrētu
atkārtojumu skaitu. Šajā gadījumā jums palīdzēs
operators {}.
Tas darbojas šādi: {5}
- pieci atkārtojumi, {2,5} - atkārtojas
no diviem līdz pieciem (abi ieskaitot), {2,}
- atkārtojas divas vai vairāk reizes.
Piemērs
Šajā piemērā meklēšanas šablons izskatās šādi:
burti 'x', burts 'a' vienu
reizi vai divas reizes, burts 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,2}x#', '!', $str);
?>
Rezultātā mainīgajā tiks ierakstīts sekojošais:
'xx ! ! xaaax'
Piemērs
Šajā piemērā meklēšanas šablons izskatās šādi:
burti 'x', burts 'a' divas
reizes vai vairāk, burts 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{2,}x#', '!', $str);
?>
Rezultātā mainīgajā tiks ierakstīts sekojošais:
'xx xax ! !'
Piemērs
Šajā piemērā meklēšanas šablons izskatās šādi:
burti 'x', burts 'a' trīs
reizes, burts 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{3}x#', '!', $str);
?>
Rezultātā mainīgajā tiks ierakstīts sekojošais:
'xx xax xaax !'
Piemērs
Šajā piemērā meklēšanas šablons izskatās šādi:
burts 'a' desmit reizes:
<?php
$str = 'aaa aaaaaaaaaa aaa';
$res = preg_replace('#a{10}#', '!', $str);
?>
Rezultātā mainīgajā tiks ierakstīts sekojošais:
'aaa ! aaa'
Piemērs
Šajā piemērā koda autors vēlējās šādu šablonu:
burti 'x', burts 'a' trīs
reizes reizes vai mazāk, burts 'x',
bet diemžēl tāds - {,3} -
nedarbojas. Jānorāda skaidri:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,3}x#', '!', $str);
?>
Rezultātā mainīgajā tiks ierakstīts sekojošais:
'xx ! ! !'
Piemērs
Nulle arī ir atļauta:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{0,3}x#', '!', $str);
?>
Rezultātā mainīgajā tiks ierakstīts sekojošais:
'! ! ! !'
Praktiskie uzdevumi
Dota virkne:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Uzrakstiet regulāro izteiksmi, kas atradīs virknes
'abba', 'abbba', 'abbbba'
un tikai tās.
Dota virkne:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Uzrakstiet regulāro izteiksmi, kas atradīs virknes
veida 'aba', kurās 'b' sastopams
mazāk nekā trīs reizes (ieskaitot).
Dota virkne:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Uzrakstiet regulāro izteiksmi, kas atradīs virknes
veida 'aba', kurās 'b' sastopams
vairāk nekā četras reizes (ieskaitot).