Chaves em expressões regulares PHP

Os operadores +, *, ? são úteis, no entanto, com eles não é possível especificar um número exato de repetições. Neste caso, o operador {} virá em seu auxílio.

Ele funciona da seguinte forma: {5} - cinco repetições, {2,5} - repete de duas a cinco vezes (ambos inclusivos), {2,} - repete duas vezes ou mais.

Exemplo

Neste exemplo, o padrão de busca é o seguinte: letra 'x', letra 'a' uma ou duas vezes, letra 'x':

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

Como resultado, será armazenado na variável o seguinte:

php'xx ! ! xaaax'

Exemplo

Neste exemplo, o padrão de busca é o seguinte: letra 'x', letra 'a' duas vezes ou mais, letra 'x':

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

Como resultado, será armazenado na variável o seguinte:

php'xx xax ! !'

Exemplo

Neste exemplo, o padrão de busca é o seguinte: letra 'x', letra 'a' três vezes, letra 'x':

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

Como resultado, será armazenado na variável o seguinte:

php'xx xax xaax !'

Exemplo

Neste exemplo, o padrão de busca é o seguinte: letra 'a' dez vezes:

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

Como resultado, será armazenado na variável o seguinte:

php'aaa ! aaa'

Exemplo

Neste exemplo, o autor do código queria o seguinte padrão: letra 'x', letra 'a' três vezes ou menos, letra 'x', mas, infelizmente, isso - {,3} - não funciona. É necessário especificar explicitamente:

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

Como resultado, será armazenado na variável o seguinte:

php'xx ! ! !'

Exemplo

Zero também é permitido:

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

Como resultado, será armazenado na variável o seguinte:

php'! ! ! !'

Problemas práticos

Задание 1

Dada a string:

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

Escreva uma expressão regular que encontre as strings 'abba', 'abbba', 'abbbba' e apenas elas.

Задание 2

Dada a string:

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

Escreva uma expressão regular que encontre strings do tipo 'aba', nas quais 'b' aparece menos de três vezes (inclusive).

Задание 3

Dada a string:

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

Escreva uma expressão regular que encontre strings do tipo 'aba', nas quais 'b' aparece mais de quatro vezes (inclusive).