Фигурни скоби в регулярни изрази на PHP
Операторите +, *, ? са добри,
но с тяхна помощ не може да се укаже конкретен
брой повторения. В този случай на помощ
идва операторът {}.
Работи по следния начин: {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' се среща
повече от четири пъти (включително).