Команда 'или' у регуларним изразима PHP
У овом лекцу ћемо размотрити команду
|, која представља моћнију
варианту ИЛИ у поређењу са
командом []. Ова команда омогућава
да се регуларни израз подели на неколико делова.
Притом, тражени садржај може одговарати или једном
делу регуларног израза, или другом. Хајде да
погледамо на примерима.
Пример
У овом примеру шаблон претраге је: три
слова 'a' или три слова 'b':
<?php
$str = 'aaa bbb abb';
$res = preg_replace('#a{3}|b{3}#', '!', $str);
?>
Као резултат у променљиву ће бити уписано следеће:
'! ! abb'
Пример
У овом примеру шаблон претраге је: три
слова 'a' или од 1 и више
слова 'b':
<?php
$str = 'aaa bbb bbbb bbbbb axx';
$res = preg_replace('#a{3}|b+#', '!', $str);
?>
Као резултат у променљиву ће бити уписано следеће:
'! ! ! ! axx'
Пример
У овом примеру шаблон претраге је: једно или више слова или три цифре:
<?php
$str = 'a ab abc 1 12 123';
$res = preg_replace('#[a-z]+|\d{3}#', '!', $str);
?>
Као резултат у променљиву ће бити уписано следеће:
'! ! ! 1 12 !'
Пример
Вертикална црта може поделити регуларни израз не на два дела, већ на било који број делова:
<?php
$str = 'aaa bbb ccc ddd';
$res = preg_replace('#a+|b+|c+#', '!', $str);
?>
Као резултат у променљиву ће бити уписано следеће:
'! ! ! ddd'
Пример
Ако је вертикална црта унутар заграда,
онда 'или' делује само унутар
тих заграда. На пример, хајде да пронађемо стрингове
према следећем шаблону: на почетку се налази
или 'a', или 'b' један или више
пута, а затим два слова 'x':
<?php
$str = 'axx bxx bbxx exx';
$res = preg_replace('#(a|b+)xx#', '!', $str);
?>
Као резултат у променљиву ће бити уписано следеће:
'! ! ! exx'
Практични задаци
Дат је стринг:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Напишите регуларни израз који ће пронаћи стрингове
према шаблону: на ивицама се налазе слова 'a',
а између њих - или слово 'e' било који
број пута или слово 'x' било који
број пута.
Дат је стринг:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Напишите регуларни израз који ће пронаћи стрингове
према шаблону: на ивицама се налазе слова 'a',
а између њих - или слово 'e' два пута
или слово 'x' било који број пута.