Запіс на курсы па HTML, CSS, JavaScript, PHP, Python, фрэймворкам і CMS,
а таксама: дапамога ў пошуку працы і заказаў, стажыроўка на рэальных праектах→
⊗ppPmRgOC 241 of 447 menu

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

byenru