PHP regulaaravaldiste 'või' käsk
Selles õppetükis analüüsime käsku
|, mis esindab
võimsamat versiooni VÕI võrreldes
käsuga []. See käsk võimaldab
regulaaravaldist jagada mitmeks osaks.
Sel juhul võib otsitav vastata kas ühele
regulaaravaldise osale või teisele. Vaatame
näidete varal.
Näide
Selles näites on otsimismustriks: kolm
tähte 'a' või kolm tähte 'b':
<?php
$str = 'aaa bbb abb';
$res = preg_replace('#a{3}|b{3}#', '!', $str);
?>
Tulemusena kirjutatakse muutujasse järgmine:
'! ! abb'
Näide
Selles näites on otsimismustriks: kolm
tähte 'a' või 1 või rohkem
tähte 'b':
<?php
$str = 'aaa bbb bbbb bbbbb axx';
$res = preg_replace('#a{3}|b+#', '!', $str);
?>
Tulemusena kirjutatakse muutujasse järgmine:
'! ! ! ! axx'
Näide
Selles näites on otsimismustriks: üks või rohkem tähte või kolm numbrit:
<?php
$str = 'a ab abc 1 12 123';
$res = preg_replace('#[a-z]+|\d{3}#', '!', $str);
?>
Tulemusena kirjutatakse muutujasse järgmine:
'! ! ! 1 12 !'
Näide
Vertikaalne joon võib jagada regulaaravaldist mitte kaheks osaks, vaid suvaliseks arvuks osadeks:
<?php
$str = 'aaa bbb ccc ddd';
$res = preg_replace('#a+|b+|c+#', '!', $str);
?>
Tulemusena kirjutatakse muutujasse järgmine:
'! ! ! ddd'
Näide
Kui vertikaalne joon asub ümarsulgude
sees, siis 'või' töötab ainult
nende sulgude sees. Näitena otsime üles stringid
järgmise mustri järgi: alguses on
kas 'a' või 'b' üks või mitu
korda, ja siis kaks tähte 'x':
<?php
$str = 'axx bxx bbxx exx';
$res = preg_replace('#(a|b+)xx#', '!', $str);
?>
Tulemusena kirjutatakse muutujasse järgmine:
'! ! ! exx'
Praktilised ülesanded
Antud string:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Kirjutage regulaaravaldis, mis leiab stringid
vastavalt mustrile: servades on tähed 'a',
ja nende vahel - kas täht 'e' suvaline
arv kordi või täht 'x' suvaline
arv kordi.
Antud string:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Kirjutage regulaaravaldis, mis leiab stringid
vastavalt mustrile: servades on tähed 'a',
ja nende vahel - kas täht 'e' kaks korda
või täht 'x' suvaline arv kordi.