Príkaz 'alebo' v regulárnych výrazoch PHP
V tejto lekcii rozoberieme príkaz
|, ktorý predstavuje výkonnejšiu
verziu ALEBO v porovnaní s
príkazom []. Tento príkaz umožňuje
rozdeliť regulárny výraz na niekoľko častí.
Hľadaný reťazec môže zodpovedať jednej
časti regulárneho výrazu alebo druhej. Pozrime
sa na príklady.
Príklad
V tomto príklade je vyhľadávací vzor takýto: tri
písmená 'a' alebo tri písmená 'b':
<?php
$str = 'aaa bbb abb';
$res = preg_replace('#a{3}|b{3}#', '!', $str);
?>
Výsledok zapísaný do premennej bude nasledovný:
'! ! abb'
Príklad
V tomto príklade je vyhľadávací vzor takýto: tri
písmená 'a' alebo od 1 a viac
písmen 'b':
<?php
$str = 'aaa bbb bbbb bbbbb axx';
$res = preg_replace('#a{3}|b+#', '!', $str);
?>
Výsledok zapísaný do premennej bude nasledovný:
'! ! ! ! axx'
Príklad
V tomto príklade je vyhľadávací vzor takýto: jedno alebo viac písmen alebo tri číslice:
<?php
$str = 'a ab abc 1 12 123';
$res = preg_replace('#[a-z]+|\d{3}#', '!', $str);
?>
Výsledok zapísaný do premennej bude nasledovný:
'! ! ! 1 12 !'
Príklad
Zvislá čiara môže rozdeliť regulárny výraz nie na dve časti, ale na ľubovoľný počet častí:
<?php
$str = 'aaa bbb ccc ddd';
$res = preg_replace('#a+|b+|c+#', '!', $str);
?>
Výsledok zapísaný do premennej bude nasledovný:
'! ! ! ddd'
Príklad
Ak je zvislá čiara v okrúhlych zátvorkách,
tak 'alebo' funguje len vnútri
týchto zátvoriek. Pre príklad nájdime reťazce
podľa nasledujúceho vzoru: na začiatku je
buď 'a', alebo 'b' jeden alebo viac
krát, a potom dve písmená 'x':
<?php
$str = 'axx bxx bbxx exx';
$res = preg_replace('#(a|b+)xx#', '!', $str);
?>
Výsledok zapísaný do premennej bude nasledovný:
'! ! ! exx'
Praktické úlohy
Daný reťazec:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Napíšte regulárny výraz, ktorý nájde reťazce
podľa vzoru: na okrajoch sú písmená 'a',
a medzi nimi - buď písmeno 'e' ľubovoľný
počet krát alebo písmeno 'x' ľubovoľný
počet krát.
Daný reťazec:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Napíšte regulárny výraz, ktorý nájde reťazce
podľa vzoru: na okrajoch sú písmená 'a',
a medzi nimi - buď písmeno 'e' dva krát
alebo písmeno 'x' ľubovoľný počet krát.