Invertendo conjuntos de caracteres em regex
Usando o acento circunflexo ^ no início de colchetes
quadrados, você pode inverter a correspondência. Ou seja,
se, por exemplo, o comando [ab] procura
pela letra 'a' ou 'b', então o comando
[^ab] procurará todos os caracteres, exceto
'a' e 'b'.
Exemplo
Neste exemplo, o padrão de pesquisa é o seguinte:
letra 'x', depois NÃO a letra 'a',
nem 'b' e nem 'c', depois a letra
'z':
<?php
$str = 'xaz xbz xcz xez';
$res = preg_replace('#x[^abc]z#', '!', $str);
?>
Como resultado, o seguinte será armazenado na variável:
'xaz xbz xcz !'
Exemplo
Neste exemplo, o padrão de pesquisa é o seguinte:
letra 'x', depois NÃO uma letra minúscula
latina, depois a letra 'z':
<?php
$str = 'xaz xbz x1z xCz';
$res = preg_replace('#x[^a-z]z#', '!', $str);
?>
Como resultado, o seguinte será armazenado na variável:
'xaz xbz ! !'
Tarefas práticas
Escreva uma expressão regular que encontre strings
seguindo o padrão: dígito '1', depois um caractere
que não seja 'e' nem 'x', dígito '2'.
Escreva uma expressão regular que encontre strings
seguindo o padrão: letra 'x', depois NÃO
um dígito de 2 a 7, letra 'z'.
Escreva uma expressão regular que encontre strings
seguindo o padrão: letra 'x', depois NÃO
uma letra latina maiúscula, 1 ou mais
vezes, letra 'z'.
Escreva uma expressão regular que encontre strings
seguindo o padrão: letra 'x', depois nem
uma letra latina maiúscula, nem minúscula e nem um dígito
de 1 a 5, 1 ou mais
vezes, letra 'z'.