匹配字符列表中的PL / SQL正则表达式破折号和括号

时间:2014-05-06 12:00:13

标签: regex oracle plsql regex-negation

我的问题是我需要从列中删除所有无效字符,但破折号和括号字符是有效字符。

到目前为止我的sql是:

SELECT REGEXP_REPLACE(column_name, '[^][-0-9a-z]' , '') FROM table_name;

但这不包括短划线字符。

SELECT REGEXP_REPLACE(column_name, '[^-][0-9a-z]' , '') FROM table_name;

这也不好。

1 个答案:

答案 0 :(得分:3)

有两个解决方案:

1,在匹配字符列表的开头和其他位置使用其中一个:

SELECT REGEXP_REPLACE(column_name, '[^][0-9a-z-]' , '') FROM table_name;

2,使用POSIX整理元素运算符[.character.]

SELECT REGEXP_REPLACE(column_name, '[^[.].][.[.][.-.]0-9a-z]' , '') FROM table_name;