Conjuntos de caracteres en expresiones regulares de PHP
Los grupos de caracteres \d y \w no
son muy flexibles. Incluso una tarea tan simple
como encontrar todas las letras, pero no los dígitos -
no puede ser resuelta por ellos. Para tales tareas
se deben usar corchetes, que representan
una operación O.
Los corchetes reemplazan un carácter,
cualquiera de los listados en su interior. Por ejemplo,
así: #x[abc]x# - estamos diciendo que
en los extremos deben haber letras x, y en el medio
- un carácter: o 'a', o 'b',
o 'c'.
Después de los corchetes se pueden escribir operadores
de repetición. Por ejemplo, así: #x[abc]+x#
- estamos diciendo que dentro de las x puede haber
cualquier cantidad de caracteres 'a', 'b'
y 'c' - en cualquier combinación.
No solo se pueden enumerar caracteres, sino crear
grupos de caracteres, escribiendo entre dos caracteres
un guion. Por ejemplo, así: #[a-d]#
- obtenemos todos los caracteres desde 'a' hasta
'd'.
Veamos algunos ejemplos.
Ejemplo
En este ejemplo, el patrón de búsqueda se ve así:
entre x's cualquier letra de 'a'
a 'z':
<?php
$str = 'xax xbx xcx x@x';
$res = preg_replace('#x[a-z]x#', '!', $str);
?>
Como resultado, en la variable se guardará lo siguiente:
'! ! ! x@x'
Ejemplo
En este ejemplo, el patrón de búsqueda se ve así:
entre x's cualquier letra de 'a'
a 'k':
<?php
$str = 'xax xbx xmx x@x';
$res = preg_replace('#x[a-k]x#', '!', $str);
?>
Como resultado, en la variable se guardará lo siguiente:
'! ! xmx x@x'
Ejemplo
En este ejemplo, el patrón de búsqueda se ve así:
entre x's cualquier letra de 'A'
a 'Z':
<?php
$str = 'xax xBx xcx x@x';
$res = preg_replace('#x[A-Z]x#', '!', $str);
?>
Como resultado, en la variable se guardará lo siguiente:
'xax ! xcx x@x'
Ejemplo
En este ejemplo, el patrón de búsqueda se ve así:
entre x's cualquier dígito de 0 a 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[0-9]x#', '!', $str);
?>
Como resultado, en la variable se guardará lo siguiente:
'xax ! ! ! x@x'
Ejemplo
En este ejemplo, el patrón de búsqueda se ve así:
entre x's cualquier dígito de 3 a 7:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[3-7]x#', '!', $str);
?>
Como resultado, en la variable se guardará lo siguiente:
'xax x1x ! ! x@x'
Ejemplo
En este ejemplo, el patrón de búsqueda se ve así:
entre x's cualquier letra de 'a'
a 'z' o un dígito de 1 a 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[a-z1-9]x#', '!', $str);
?>
Como resultado, en la variable se guardará lo siguiente:
'! ! ! ! x@x'
Ejemplo
En este ejemplo, el patrón de búsqueda se ve así:
entre x's cualquier letra de 'a'
a 'z' o una letra de 'A' a
'Z':
<?php
$str = 'xax xBx xcx x5x x@x';
$res = preg_replace('#x[a-zA-Z]x#', '!', $str);
?>
Como resultado, en la variable se guardará lo siguiente:
'! ! ! x5x x@x'
Ejemplo
En este ejemplo, el patrón de búsqueda se ve así:
entre x's cualquier letra de 'a'
a 'z' o los dígitos 1, 2:
<?php
$str = 'xax xbx x1x x2x x3x';
$res = preg_replace('#x[a-z12]x#', '!', $str);
?>
Como resultado, en la variable se guardará lo siguiente:
'! ! ! ! x3x'
Ejemplo
En este ejemplo, el patrón de búsqueda se ve así:
entre x's letras de 'a' a 'z'
en cantidad de 1 o más:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]+x#', '!', $str);
?>
Como resultado, en la variable se guardará lo siguiente:
'xx ! ! ! x123x xa3x'
Ejemplo
Hagamos que la cantidad de letras pueda ser cero:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]*x#', '!', $str);
?>
Como resultado, en la variable se guardará lo siguiente:
'! ! ! x123x xa3x'
Tareas prácticas
Dada la cadena:
<?php
$str = 'aba aea aca aza axa';
?>
Escriba una expresión regular que encuentre según el siguiente
patrón: en los extremos hay letras 'a',
y entre ellas - la letra 'b', 'e'
o 'x'.
Dada la cadena:
<?php
$str = 'a1a a3a a7a a9a aba';
?>
Escriba una expresión regular que encuentre según el siguiente
patrón: en los extremos hay letras 'a',
y entre ellas - un dígito de 3 a 6.
Dada la cadena:
<?php
$str = 'aba aea afa aha aga';
?>
Escriba una expresión regular que encuentre según el siguiente
patrón: en los extremos hay letras 'a',
y entre ellas - una letra de a a g.
Dada la cadena:
<?php
$str = 'aba aea afa aha aga';
?>
Escriba una expresión regular que encuentre según el siguiente
patrón: en los extremos hay letras 'a',
y entre ellas - una letra de a a f y de j a z.
Dada la cadena:
<?php
$str = 'aAa aea aEa aJa a3a';
?>
Escriba una expresión regular que encuentre según el siguiente
patrón: en los extremos hay letras 'a',
y entre ellas - una letra de a a f y de A a D.
Dada la cadena:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Escriba una expresión regular que encuentre según el siguiente
patrón: en los extremos hay letras 'a',
y entre ellas - letras latinas minúsculas,
sin afectar a las demás.
Dada la cadena:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Escriba una expresión regular que encuentre según el siguiente
patrón: en los extremos hay letras 'a',
y entre ellas - letras latinas minúsculas y mayúsculas, sin afectar a las demás.
Dada la cadena:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Escriba una expresión regular que encuentre según el siguiente
patrón: en los extremos hay letras 'a',
y entre ellas - letras latinas minúsculas y dígitos, sin afectar a las demás.