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<?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:

php'! ! 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<?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:

php'! ! ! ! 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<?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:

php'! ! ! 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<?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:

php'! ! ! 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<?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:

php'! ! ! exx'

Gyakorlati feladatok

Задание 1

Adott a következő sztring:

php<?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.

Задание 2

Adott a következő sztring:

php<?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.