Llaves en expresiones regulares de PHP

Los operadores +, *, ? son útiles, sin embargo, con ellos no se puede especificar un número concreto de repeticiones. En este caso te ayudará el operador {}.

Funciona de la siguiente manera: {5} - cinco repeticiones, {2,5} - se repite de dos a cinco veces (ambos inclusive), {2,} - se repite dos o más veces.

Ejemplo

En este ejemplo el patrón de búsqueda es el siguiente: letra 'x', letra 'a' una o dos veces, letra 'x':

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

Como resultado, en la variable se guardará lo siguiente:

php'xx ! ! xaaax'

Ejemplo

En este ejemplo el patrón de búsqueda es el siguiente: letra 'x', letra 'a' dos veces o más, letra 'x':

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

Como resultado, en la variable se guardará lo siguiente:

php'xx xax ! !'

Ejemplo

En este ejemplo el patrón de búsqueda es el siguiente: letra 'x', letra 'a' tres veces, letra 'x':

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

Como resultado, en la variable se guardará lo siguiente:

php'xx xax xaax !'

Ejemplo

En este ejemplo el patrón de búsqueda es el siguiente: letra 'a' diez veces:

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

Como resultado, en la variable se guardará lo siguiente:

php'aaa ! aaa'

Ejemplo

En este ejemplo el autor del código quería este patrón: letra 'x', letra 'a' tres veces o menos, letra 'x', pero, desafortunadamente, esto - {,3} - no funciona. Hay que especificarlo explícitamente:

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

Como resultado, en la variable se guardará lo siguiente:

php'xx ! ! !'

Ejemplo

El cero también está permitido:

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

Como resultado, en la variable se guardará lo siguiente:

php'! ! ! !'

Problemas prácticos

Задание 1

Dada la cadena:

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

Escribe una expresión regular que encuentre las cadenas 'abba', 'abbba', 'abbbba' y solo ellas.

Задание 2

Dada la cadena:

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

Escribe una expresión regular que encuentre las cadenas del tipo 'aba', en las que 'b' aparece menos de tres veces (inclusive).

Задание 3

Dada la cadena:

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

Escribe una expresión regular que encuentre las cadenas del tipo 'aba', en las que 'b' aparece más de cuatro veces (inclusive).