Rakstzīmju atkārtošanās operatori
Ir situācijas, kad mēs vēlamies norādīt,
ka rakstzīme atkārtojas noteiktu skaitu
reizu. Ja mēs zinām precīzu atkārtojumu skaitu,
tad varam vienkārši to uzrakstīt vairākas reizes
- #aaaa#. Bet ko darīt, ja mēs vēlamies
pateikt šādi: atkārtot vienu vai vairāk
reizes?
Šim nolūkam pastāv (kvantifikatori)
atkārtošanās: plus + (viens vai vairāk reizes),
zvaigznīte * (nulle vai vairāk reizes) un
jautājuma zīme ? (nulle vai vienu reizi). Šie
operatori iedarbojas uz to rakstzīmi, kas
atrodas tieši pirms tiem.
Apskatīsim šo operatoru darbību ar piemēriem.
Piemērs
Atradīsim visas apakšvirknes pēc šablona burtѕ
'x', burts 'a' viens vai vairāk
reizes, burts 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa+x#', '!', $str);
?>
Rezultātā mainīgajā ierakstīsies sekojošais:
'xx ! ! ! xbx'
Piemērs
Atradīsim visas apakšvirknes pēc šablona burts
'x', burts 'a' nulle vai vairāk
reizes, burts 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa*x#', '!', $str);
?>
Rezultātā mainīgajā ierakstīsies sekojošais:
'! ! ! ! xbx'
Piemērs
Atradīsim visas apakšvirknes pēc šablona burts
'x', burts 'a' nulle vai viens
reizi, burts 'x':
<?php
$str = 'xx xax xaax xbx';
$res = preg_replace('#xa?x#', '!', $str);
?>
Rezultātā mainīgajā ierakstīsies sekojošais:
'! ! xaax xbx'
Praktiskie uzdevumi
Dota virkne:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Uzrakstiet regulāro izteiksmi, kas atradīs virknes
pēc šablona: burts 'a', burts 'b'
viens vai vairāk reizes, burts 'a'.
Dota virkne:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Uzrakstiet regulāro izteiksmi, kas atradīs virknes
pēc šablona: burts 'a', burts 'b'
nulle vai vairāk reizes, burts 'a'.
Dota virkne:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Uzrakstiet regulāro izteiksmi, kas atradīs virknes
pēc šablona: burts 'a', burts 'b'
vienu reizi vai nevienu, burts 'a'.
Dota virkne:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Uzrakstiet regulāro izteiksmi, kas atradīs virknes
'aa', 'aba', 'abba',
'abbba', neiekļaujot 'abca'
un 'abea'.