这个问题是关于 Oracle、pl/sql 和 regexp_like 函数的。
我正在尝试构建一个匹配所有典型特殊字符的字符集。我的字符集目前看起来像:
pattern := '[-~`!@#$%^&*\(\)\\{}_+=|''";:,./?]+';
我想将方括号添加到此字符集中,但是,无论我尝试添加 ']' 都不起作用。这是一个说明问题的简单示例:
select
case when regexp_like('w]ord', '[\]]+') then 'true'
else 'false' end
from dual;
这将返回 false,这意味着它与 ']' 字符不匹配。奇怪的是,我可以让 '[' 字符匹配,因为它返回 true:
select
case when regexp_like('w[ord', '[\[]+') then 'true'
else 'false' end
from dual;
为什么不深入阅读手册 SQL 语言参考、附录 D、Oracle 正则表达式支持:
我认为反斜杠在括号内没有特殊含义。您可以按原样使用它:
regexp_like('a]b','[]]')
或使用or
:regexp_like('a]b','([whatever]|\])')
。有什么理由不能用
regexp_like('a]b','[^[:alnum:]]')
?