В данном уроке мы с вами разберем команду
|
, которая представляет собой более
мощный вариант ИЛИ
по сравнению с
командой []
. Данная команда позволяет
разделить регулярку на несколько частей.
При этом искомое может попасть либо под одну
часть регулярки, либо под другую. Давайте
посмотрим на примерах.
Пример
В данном примере шаблон поиска такой: три
буквы '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'
любое количество раз.