Витичасте заграде у регуларним изразима PHP

Оператори +, *, ? су добри, међутим, њима није могуће одредити тачан број понављања. У том случају ће вам помоћи оператор {}.

Ради на следећи начин: {5} - пет понављања, {2,5} - понавља се од два до пет (оба укључујући), {2,} - понавља се два и више пута.

Пример

У овом примеру шаблон претраге изгледа овако: слово 'x', слово 'a' један или два пута, слово 'x':

php<?php
  $str = 'xx xax xaax xaaax';
  $res = preg_replace('#xa{1,2}x#', '!', $str);
?>

Као резултат у променљиву ће бити уписано следеће:

php'xx ! ! xaaax'

Пример

У овом примеру шаблон претраге изгледа овако: слово 'x', слово 'a' два пута и више, слово 'x':

php<?php
  $str = 'xx xax xaax xaaax';
  $res = preg_replace('#xa{2,}x#', '!', $str);
?>

Као резултат у променљиву ће бити уписано следеће:

php'xx xax ! !'

Пример

У овом примеру шаблон претраге изгледа овако: слово 'x', слово 'a' три пута, слово 'x':

php<?php
  $str = 'xx xax xaax xaaax';
  $res = preg_replace('#xa{3}x#', '!', $str);
?>

Као резултат у променљиву ће бити уписано следеће:

php'xx xax xaax !'

Пример

У овом примеру шаблон претраге изгледа овако: слово 'a' десет пута:

php<?php
  $str = 'aaa aaaaaaaaaa aaa';
  $res = preg_replace('#a{10}#', '!', $str);
?>

Као резултат у променљиву ће бити уписано следеће:

php'aaa ! aaa'

Пример

У овом примеру аутор кода је желео овакав шаблон: слово 'x', слово 'a' три пута и мање, слово 'x', али, нажалост, ово - {,3} - не ради. Потребно је експлицитно навести:

php<?php
  $str = 'xx xax xaax xaaax';
  $res = preg_replace('#xa{1,3}x#', '!', $str);
?>

Као резултат у променљиву ће бити уписано следеће:

php'xx ! ! !'

Пример

Нула је такође дозвољена:

php<?php
  $str = 'xx xax xaax xaaax';
  $res = preg_replace('#xa{0,3}x#', '!', $str);
?>

Као резултат у променљиву ће бити уписано следеће:

php'! ! ! !'

Практични задаци

Задание 1

Дат је стринг:

php<?php
  $str = 'aa aba abba abbba abbbba abbbbba';
?>

Напишите регуларни израз који ће пронаћи стрингове 'abba', 'abbba', 'abbbba' и само њих.

Задание 2

Дат је стринг:

php<?php
  $str = 'aa aba abba abbba abbbba abbbbba';
?>

Напишите регуларни израз који ће пронаћи стрингове облика 'aba', у којима се 'b' појављује мање од три пута (укључујући).

Задание 3

Дат је стринг:

php<?php
  $str = 'aa aba abba abbba abbbba abbbbba';
?>

Напишите регуларни израз који ће пронаћи стрингове облика 'aba', у којима се 'b' појављује више од четири пута (укључујући).