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
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,2}x#', '!', $str);
?>
Como resultado, en la variable se guardará lo siguiente:
'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
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{2,}x#', '!', $str);
?>
Como resultado, en la variable se guardará lo siguiente:
'xx xax ! !'
Ejemplo
En este ejemplo el patrón de búsqueda es el siguiente:
letra 'x', letra 'a' tres
veces, letra 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{3}x#', '!', $str);
?>
Como resultado, en la variable se guardará lo siguiente:
'xx xax xaax !'
Ejemplo
En este ejemplo el patrón de búsqueda es el siguiente:
letra 'a' diez veces:
<?php
$str = 'aaa aaaaaaaaaa aaa';
$res = preg_replace('#a{10}#', '!', $str);
?>
Como resultado, en la variable se guardará lo siguiente:
'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
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,3}x#', '!', $str);
?>
Como resultado, en la variable se guardará lo siguiente:
'xx ! ! !'
Ejemplo
El cero también está permitido:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{0,3}x#', '!', $str);
?>
Como resultado, en la variable se guardará lo siguiente:
'! ! ! !'
Problemas prácticos
Dada la cadena:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Escribe una expresión regular que encuentre las cadenas
'abba', 'abbba', 'abbbba'
y solo ellas.
Dada la cadena:
<?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).
Dada la cadena:
<?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).