Команда 'или' в регулярных выражениях 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' любое количество раз.