Каманда 'ці' у рэгулярных выразах 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'
любую колькасць разоў.