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

Gud*_*ddu 3 regex oracle

我想替换所有不存在的字符

在 az 范围内

在AZ范围内

空间

连字符

下划线

开幕(

结束)

我到达了这个正则表达式

[^0-9A-Za-z\-\(\)]
Run Code Online (Sandbox Code Playgroud)

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

当我在 Oracle 查询中使用相同的表达式时

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

我只得到 (HiThere) 缺少连字符。

出了什么问题?

Ara*_*llo 5

尝试将其放在最后:

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

另外,正如 @DavidFaber 和 @hwnd 所说,你也不需要逃避,()所以-

SELECT regexp_replace('(Hi-There)','[^0-9A-Za-z()-]', '')  FROM dual
Run Code Online (Sandbox Code Playgroud)

会是对的。