Командата 'или' в регулярните изрази на 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' произволен брой пъти.