Operadores de repetición de caracteres en expresiones regulares
Hay situaciones en las que queremos indicar
que un carácter se repite un número determinado
de veces. Si conocemos el número exacto de repeticiones,
podemos simplemente escribirlo varias veces
- #aaaa#. Pero, ¿qué hacer si queremos
decir algo como: repetir una o más veces?
Para esto existen los operadores (cuantificadores)
de repetición: el signo más + (una o más veces),
el asterisco * (cero o más veces) y
el signo de interrogación ? (cero o una vez). Estos
operadores actúan sobre el carácter que
está delante de ellos.
Veamos el funcionamiento de estos operadores con ejemplos.
Ejemplo
Encontremos todas las subcadenas según el patrón letra
'x', letra 'a' una o más
veces, letra 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa+x#', '!', $str);
?>
Como resultado, se almacenará lo siguiente en la variable:
'xx ! ! ! xbx'
Ejemplo
Encontremos todas las subcadenas según el patrón letra
'x', letra 'a' cero o más
veces, letra 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa*x#', '!', $str);
?>
Como resultado, se almacenará lo siguiente en la variable:
'! ! ! ! xbx'
Ejemplo
Encontremos todas las subcadenas según el patrón letra
'x', letra 'a' cero o una
vez, letra 'x':
<?php
$str = 'xx xax xaax xbx';
$res = preg_replace('#xa?x#', '!', $str);
?>
Como resultado, se almacenará lo siguiente en la variable:
'! ! xaax xbx'
Tareas prácticas
Dada la cadena:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Escriba una expresión regular que encuentre las cadenas
según el patrón: letra 'a', letra 'b'
una o más veces, letra 'a'.
Dada la cadena:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Escriba una expresión regular que encuentre las cadenas
según el patrón: letra 'a', letra 'b'
cero o más veces, letra 'a'.
Dada la cadena:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Escriba una expresión regular que encuentre las cadenas
según el patrón: letra 'a', letra 'b'
una vez o ninguna, letra 'a'.
Dada la cadena:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Escriba una expresión regular que encuentre las cadenas
'aa', 'aba', 'abba',
'abbba', sin capturar 'abca'
y 'abea'.