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<?php
  $str = 'aaa bbb abb';
  $res = preg_replace('#a{3}|b{3}#', '!', $str);
?>

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

php'! ! abb'

Ejemplo

En este ejemplo, el patrón de búsqueda es: tres letras 'a' o desde 1 o más letras 'b':

php<?php
  $str = 'aaa bbb bbbb bbbbb axx';
  $res = preg_replace('#a{3}|b+#', '!', $str);
?>

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

php'! ! ! ! axx'

Ejemplo

En este ejemplo, el patrón de búsqueda es: una o más letras o tres dígitos:

php<?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:

php'! ! ! 1 12 !'

Ejemplo

La barra vertical puede dividir la expresión regular no en dos partes, sino en cualquier cantidad de partes:

php<?php
  $str = 'aaa bbb ccc ddd';
  $res = preg_replace('#a+|b+|c+#', '!', $str);
?>

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

php'! ! ! 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<?php
  $str = 'axx bxx bbxx exx';
  $res = preg_replace('#(a|b+)xx#', '!', $str);
?>

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

php'! ! ! exx'

Tareas prácticas

Задание 1

Tenemos una cadena:

php<?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.

Задание 2

Tenemos una cadena:

php<?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.