Komanda 'vai' regulārajās izteiksmēs PHP
Šajā nodarbībā mēs analizēsim komandu
|, kas ir jaudīgāka
VAI salīdzinājumā ar
komandu []. Šī komanda ļauj
sadalīt regulāro izteiksmi vairākās daļās.
Šajā gadījumā meklētais var atbilst vai nu vienai
regulārās izteiksmes daļai, vai otrai. Apskatīsim
piemērus.
Piemērs
Šajā piemērā meklēšanas veidne ir šāda: trīs
burti 'a' vai trīs burti 'b':
<?php
$str = 'aaa bbb abb';
$res = preg_replace('#a{3}|b{3}#', '!', $str);
?>
Rezultātā mainīgajā tiks ierakstīts sekojošais:
'! ! abb'
Piemērs
Šajā piemērā meklēšanas veidne ir šāda: trīs
burti 'a' vai no 1 un vairāk
burti 'b':
<?php
$str = 'aaa bbb bbbb bbbbb axx';
$res = preg_replace('#a{3}|b+#', '!', $str);
?>
Rezultātā mainīgajā tiks ierakstīts sekojošais:
'! ! ! ! axx'
Piemērs
Šajā piemērā meklēšanas veidne ir šāda: viens vai vairāk burti vai trīs cipari:
<?php
$str = 'a ab abc 1 12 123';
$res = preg_replace('#[a-z]+|\d{3}#', '!', $str);
?>
Rezultātā mainīgajā tiks ierakstīts sekojošais:
'! ! ! 1 12 !'
Piemērs
Vertikālā svītra var sadalīt regulāro izteiksmi ne divās daļās, bet jebkurā daudzumā daļu:
<?php
$str = 'aaa bbb ccc ddd';
$res = preg_replace('#a+|b+|c+#', '!', $str);
?>
Rezultātā mainīgajā tiks ierakstīts sekojošais:
'! ! ! ddd'
Piemērs
Ja vertikālā svītra atrodas apaļās iekavās,
tad 'vai' darbojas tikai šo
iekavu iekšienē. Piemēram, atradīsim virknes
pēc šādas veidnes: sākumā atrodas
vai 'a', vai 'b' vienu reizi vai vairāk
reizes, un pēc tam divi burti 'x':
<?php
$str = 'axx bxx bbxx exx';
$res = preg_replace('#(a|b+)xx#', '!', $str);
?>
Rezultātā mainīgajā tiks ierakstīts sekojošais:
'! ! ! exx'
Praktiskie uzdevumi
Dota virkne:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Uzrakstiet regulāro izteiksmi, kas atradīs virknes
pēc veidnes: malās atrodas burti 'a',
un starp tiem - vai burts 'e' jebkurš
daudzums reižu vai burts 'x' jebkurš
daudzums reižu.
Dota virkne:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Uzrakstiet regulāro izteiksmi, kas atradīs virknes
pēc veidnes: malās atrodas burti 'a',
un starp tiem - vai burts 'e' divas reizes
vai burts 'x' jebkurš daudzums reižu.