Esta questão é em relação ao Oracle, pl/sql e a função regexp_like.
Estou tentando construir um conjunto de caracteres que corresponda a todos os caracteres especiais típicos. Meu conjunto de caracteres atualmente se parece com:
pattern := '[-~`!@#$%^&*\(\)\\{}_+=|''";:,./?]+';
Gostaria de adicionar os colchetes a este conjunto de caracteres, no entanto, tudo o que tento adicionar ']' não está funcionando. Aqui está um exemplo simples que ilustra o problema:
select
case when regexp_like('w]ord', '[\]]+') then 'true'
else 'false' end
from dual;
Isso retorna falso, o que significa que não corresponde ao caractere ']'. Curiosamente, posso fazer com que o caractere '[' corresponda porque isso retorna verdadeiro:
select
case when regexp_like('w[ord', '[\[]+') then 'true'
else 'false' end
from dual;
Por que você não mergulha no manual SQL Language Reference , Apêndice D, Oracle Regular Expression Support:
Não acho que a barra invertida tenha um significado especial entre os colchetes. Você pode usá-lo como está:
regexp_like('a]b','[]]')
ou usar umor
:regexp_like('a]b','([whatever]|\])')
.Algum motivo que você não pode usar
regexp_like('a]b','[^[:alnum:]]')
?