A 'vagy' parancs a PHP reguláris kifejezéseiben
Ebben a leckében megvizsgáljuk a
| parancsot, amely a
[] parancsnál
hatékonyabb VAGY változatot képvisel.
Ez a parancs lehetővé teszi a regex
több részre osztását.
Ebben az esetben a keresett elem vagy az egyik
regex résznek, vagy a másiknak felel meg. Nézzünk
példákat.
Példa
Ebben a példában a keresési minta a következő: három
'a' betű vagy három 'b' betű:
<?php
$str = 'aaa bbb abb';
$res = preg_replace('#a{3}|b{3}#', '!', $str);
?>
Ennek eredményeképpen a változóba a következő íródik:
'! ! abb'
Példa
Ebben a példában a keresési minta a következő: három
'a' betű vagy 1 vagy több
'b' betű:
<?php
$str = 'aaa bbb bbbb bbbbb axx';
$res = preg_replace('#a{3}|b+#', '!', $str);
?>
Ennek eredményeképpen a változóba a következő íródik:
'! ! ! ! axx'
Példa
Ebben a példában a keresési minta a következő: egy vagy több betű vagy három számjegy:
<?php
$str = 'a ab abc 1 12 123';
$res = preg_replace('#[a-z]+|\d{3}#', '!', $str);
?>
Ennek eredményeképpen a változóba a következő íródik:
'! ! ! 1 12 !'
Példa
A függőleges vonal nem csak két részre, hanem tetszőleges számú részre oszthatja a regexet:
<?php
$str = 'aaa bbb ccc ddd';
$res = preg_replace('#a+|b+|c+#', '!', $str);
?>
Ennek eredményeképpen a változóba a következő íródik:
'! ! ! ddd'
Példa
Ha a függőleges vonal kerek zárójelek
belsejében található, akkor a 'vagy' csak azon
zárójeleken belül működik. Példaként keressük meg a
következő minta szerinti sztringeket: az elején
'a', vagy 'b' áll egy vagy több
alkalommal, majd két 'x' betű következik:
<?php
$str = 'axx bxx bbxx exx';
$res = preg_replace('#(a|b+)xx#', '!', $str);
?>
Ennek eredményeképpen a változóba a következő íródik:
'! ! ! exx'
Gyakorlati feladatok
Adott a következő sztring:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Írjon reguláris kifejezést, amely a
következő minta szerinti sztringeket találja meg: a széleken
'a' betűk állnak,
köztük - vagy 'e' betű bármennyi
alkalommal, vagy 'x' betű bármennyi
alkalommal.
Adott a következő sztring:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Írjon reguláris kifejezést, amely a
következő minta szerinti sztringeket találja meg: a széleken
'a' betűk állnak,
köztük - vagy 'e' betű kétszer
vagy 'x' betű bármennyi alkalommal.