Витичасте заграде у регуларним изразима 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' појављује
више од четири пута (укључујући).