Команда 'или' у регуларним изразима PHP

У овом лекцу ћемо размотрити команду |, која представља моћнију варианту ИЛИ у поређењу са командом []. Ова команда омогућава да се регуларни израз подели на неколико делова. Притом, тражени садржај може одговарати или једном делу регуларног израза, или другом. Хајде да погледамо на примерима.

Пример

У овом примеру шаблон претраге је: три слова 'a' или три слова 'b':

php<?php
  $str = 'aaa bbb abb';
  $res = preg_replace('#a{3}|b{3}#', '!', $str);
?>

Као резултат у променљиву ће бити уписано следеће:

php'! ! abb'

Пример

У овом примеру шаблон претраге је: три слова 'a' или од 1 и више слова 'b':

php<?php
  $str = 'aaa bbb bbbb bbbbb axx';
  $res = preg_replace('#a{3}|b+#', '!', $str);
?>

Као резултат у променљиву ће бити уписано следеће:

php'! ! ! ! axx'

Пример

У овом примеру шаблон претраге је: једно или више слова или три цифре:

php<?php
  $str = 'a ab abc 1 12 123';
  $res = preg_replace('#[a-z]+|\d{3}#', '!', $str);
?>

Као резултат у променљиву ће бити уписано следеће:

php'! ! ! 1 12 !'

Пример

Вертикална црта може поделити регуларни израз не на два дела, већ на било који број делова:

php<?php
  $str = 'aaa bbb ccc ddd';
  $res = preg_replace('#a+|b+|c+#', '!', $str);
?>

Као резултат у променљиву ће бити уписано следеће:

php'! ! ! ddd'

Пример

Ако је вертикална црта унутар заграда, онда 'или' делује само унутар тих заграда. На пример, хајде да пронађемо стрингове према следећем шаблону: на почетку се налази или 'a', или 'b' један или више пута, а затим два слова 'x':

php<?php
  $str = 'axx bxx bbxx exx';
  $res = preg_replace('#(a|b+)xx#', '!', $str);
?>

Као резултат у променљиву ће бити уписано следеће:

php'! ! ! exx'

Практични задаци

Задание 1

Дат је стринг:

php<?php
  $str = 'aeeea aeea aea axa axxa axxxa';
?>

Напишите регуларни израз који ће пронаћи стрингове према шаблону: на ивицама се налазе слова 'a', а између њих - или слово 'e' било који број пута или слово 'x' било који број пута.

Задание 2

Дат је стринг:

php<?php
  $str = 'aeeea aeea aea axa axxa axxxa';
?>

Напишите регуларни израз који ће пронаћи стрингове према шаблону: на ивицама се налазе слова 'a', а између њих - или слово 'e' два пута или слово 'x' било који број пута.