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