El comando 'o' en expresiones regulares de PHP
En esta lección analizaremos el comando
|, que representa una variante más
poderosa de O en comparación con el
comando []. Este comando permite
dividir la expresión regular en varias partes.
Con ello, lo buscado puede encajar en una
parte de la expresión regular o en otra. Veamos
algunos ejemplos.
Ejemplo
En este ejemplo, el patrón de búsqueda es: tres
letras 'a' o tres letras 'b':
<?php
$str = 'aaa bbb abb';
$res = preg_replace('#a{3}|b{3}#', '!', $str);
?>
Como resultado, en la variable se guardará lo siguiente:
'! ! abb'
Ejemplo
En este ejemplo, el patrón de búsqueda es: tres
letras 'a' o desde 1 o más
letras 'b':
<?php
$str = 'aaa bbb bbbb bbbbb axx';
$res = preg_replace('#a{3}|b+#', '!', $str);
?>
Como resultado, en la variable se guardará lo siguiente:
'! ! ! ! axx'
Ejemplo
En este ejemplo, el patrón de búsqueda es: una o más letras o tres dígitos:
<?php
$str = 'a ab abc 1 12 123';
$res = preg_replace('#[a-z]+|\d{3}#', '!', $str);
?>
Como resultado, en la variable se guardará lo siguiente:
'! ! ! 1 12 !'
Ejemplo
La barra vertical puede dividir la expresión regular no en dos partes, sino en cualquier cantidad de partes:
<?php
$str = 'aaa bbb ccc ddd';
$res = preg_replace('#a+|b+|c+#', '!', $str);
?>
Como resultado, en la variable se guardará lo siguiente:
'! ! ! ddd'
Ejemplo
Si la barra vertical está dentro de paréntesis,
entonces 'o' funciona solo dentro de
esos paréntesis. Como ejemplo, busquemos cadenas
según el siguiente patrón: al inicio hay
'a', o 'b' una o más veces,
y luego dos letras 'x':
<?php
$str = 'axx bxx bbxx exx';
$res = preg_replace('#(a|b+)xx#', '!', $str);
?>
Como resultado, en la variable se guardará lo siguiente:
'! ! ! exx'
Tareas prácticas
Tenemos una cadena:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Escriba una expresión regular que encuentre las cadenas
según el patrón: en los extremos hay letras 'a',
y entre ellas - o la letra 'e' cualquier
cantidad de veces o la letra 'x' cualquier
cantidad de veces.
Tenemos una cadena:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Escriba una expresión regular que encuentre las cadenas
según el patrón: en los extremos hay letras 'a',
y entre ellas - o la letra 'e' dos veces
o la letra 'x' cualquier cantidad de veces.