Inversión de conjuntos de caracteres en regex
Usando el símbolo de intercalación ^ al principio de
los corchetes se puede invertir la búsqueda. Es decir,
si, por ejemplo, el comando [ab] busca
la letra 'a' o 'b', entonces el comando
[^ab] buscará todos los caracteres, excepto
'a' y 'b'.
Ejemplo
En este ejemplo, el patrón de búsqueda es el siguiente:
letra 'x', luego NO letra 'a',
ni 'b' ni 'c', después letra
'z':
<?php
$str = 'xaz xbz xcz xez';
$res = preg_replace('#x[^abc]z#', '!', $str);
?>
Como resultado, en la variable se guardará lo siguiente:
'xaz xbz xcz !'
Ejemplo
En este ejemplo, el patrón de búsqueda es el siguiente:
letra 'x', luego NO letra latina minúscula,
después letra 'z':
<?php
$str = 'xaz xbz x1z xCz';
$res = preg_replace('#x[^a-z]z#', '!', $str);
?>
Como resultado, en la variable se guardará lo siguiente:
'xaz xbz ! !'
Tareas prácticas
Escribe una expresión regular que encuentre cadenas
según el patrón: dígito '1', luego carácter
que no sea 'e' ni 'x', dígito '2'.
Escribe una expresión regular que encuentre cadenas
según el patrón: letra 'x', luego NO
dígito del 2 al 7, letra 'z'.
Escribe una expresión regular que encuentre cadenas
según el patrón: letra 'x', luego NO
letra latina mayúscula de 1 o más
veces, letra 'z'.
Escribe una expresión regular que encuentre cadenas
según el patrón: letra 'x', luego ni
letra latina mayúscula ni minúscula ni dígito
del 1 al 5 de 1 o más
veces, letra 'z'.