2013-10-17 120 views
0

我想用REGEXP_REPLACE函数替换字符串中的方括号。即使我逃避这些chracters它不会取代用oracle替换字符串的方括号REGEXP_REPLACE函数

select regexp_replace('VMI[[DATA]]INFO', '[\[\]]', '_') from dual; 

结果

VMI[[DATA]]INFO 

我们怎样才能做到这一点?我错过了什么吗?

回答

4

你可以这样说:

select regexp_replace('VMI[[DATA]]INFO', '\[|\]', '_') from dual; 

但我不认为这都是必须的正则表达式,你也可以使用翻译

select translate('VMI[[DATA]]INFO', '[]', '__') from dual; 

Here is a sqlfiddle demo

+0

作为开发人员有普遍倾向于使用正则表达式进行替换,并不知道oracle的translate()函数。现在我按照您的建议使用translate()。谢谢 – Pokuri

1

内倾性格类,你不需要逃脱。特殊规则适用于 - ]及^,原因很明显(见例如List of metacharacters for MySQL square brackets

所以你的情况,你可以使用

select regexp_replace('VMI[[DATA]]INFO', '[][]', '_') from dual; 

,但我同意@ABCade - 定期expresssions是矫枉过正这个。

相关问题