Фігурныя дужкі ў рэгулярных выразах 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' сустракаецца больш за чатыры разы (ўключна).