具有连字符的正则表达式给出不同的结果

时间:2015-02-13 15:52:26

标签: regex oracle

我想替换所有不是

的字符

在范围a-z

在A-Z范围内

空间

连字符

下划线

开场(

结束)

我到达了这个RegEx

[^0-9A-Za-z\-\(\)]

当我在https://www.regex101.com/的字符串(Hi-There)上测试时,我得到了结果(Hi-There)

当我使用

在Oracle Query中使用相同的表达式时
SELECT regexp_replace('(Hi-There)','[^0-9A-Za-z\-\(\)]', '')  FROM dual

我只得到(HiThere)丢失的连字符。

出了什么问题?

1 个答案:

答案 0 :(得分:3)

尝试将其放在最后:

SELECT regexp_replace('(Hi-There)','[^0-9A-Za-z\(\)\-]', '')  FROM dual

另外,正如@DavidFaber和@hwnd所说,你不需要() - {em}

}。

SELECT regexp_replace('(Hi-There)','[^0-9A-Za-z()-]', '')  FROM dual

是对的。