Операторы +
, *
, ?
хороши,
однако, с их помощью нельзя указать конкретное
число повторений. В этом случае вам на помощь
придет оператор {}
.
Работает он следующим образом: {5}
- пять повторений, {2,5}
- повторяется
от двух до пяти (оба включительно), {2,}
- повторяется два и более раз.
Пример
В данном примере шаблон поиска выглядит так:
буква 'x'
, буква 'a'
один
или два раза, буква 'x'
:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,2}x#', '!', $str);
?>
В результате в переменную запишется следующее:
'xx ! ! xaaax'
Пример
В данном примере шаблон поиска выглядит так:
буква 'x'
, буква 'a'
два
раза и более, буква 'x'
:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{2,}x#', '!', $str);
?>
В результате в переменную запишется следующее:
'xx xax ! !'
Пример
В данном примере шаблон поиска выглядит так:
буква 'x'
, буква 'a'
три
раза, буква 'x'
:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{3}x#', '!', $str);
?>
В результате в переменную запишется следующее:
'xx xax xaax !'
Пример
В данном примере шаблон поиска выглядит так:
буква 'a'
десять раз:
<?php
$str = 'aaa aaaaaaaaaa aaa';
$res = preg_replace('#a{10}#', '!', $str);
?>
В результате в переменную запишется следующее:
'aaa ! aaa'
Пример
В данном примере автор кода хотел такой шаблон:
буква 'x'
, буква 'a'
три
раза раза и меньше, буква 'x'
,
но, к сожалению, такое - {,3}
- не
работает. Нужно указать явно:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,3}x#', '!', $str);
?>
В результате в переменную запишется следующее:
'xx ! ! !'
Пример
Ноль тоже допустим:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{0,3}x#', '!', $str);
?>
В результате в переменную запишется следующее:
'! ! ! !'
Практические задачи
Дана строка:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Напишите регулярку, которая найдет строки
'abba'
, 'abbba'
, 'abbbba'
и только их.
Дана строка:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Напишите регулярку, которая найдет строки
вида 'aba'
, в которых 'b'
встречается
менее трех раз (включительно).
Дана строка:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Напишите регулярку, которая найдет строки
вида 'aba'
, в которых 'b'
встречается
более четырех раз (включительно).