我正在为Strings创建一个小的replaceParam函数,并希望能够逃避替换, G。如何在Oracle中转义regexp_replace?
select regexp_replace('%ABC# %ABC#','%ABC#', 'XXX')
from dual;
导致
XXX XXX
但我希望能够逃脱replacment,E。 G。通过在字符串前面加一个\,否则将被替换。
select regexp_replace('%ABC# \%ABC#','<themagicregexp>', 'XXX')
from dual;
应导致
XXX \%ABC#
我尝试了不匹配的字符列表,但这不起作用。
select regexp_replace('%ABC#abc\%ABC#','<themagicregexp>', 'XXX')
from dual;
应导致
XXXabc\%ABC#
此外,因为有人提到它:我不能跟字边界去,因为这也应该工作:
yoyo%ABC#yoyo
我有感觉这可以在一个正则表达式中完成,但我只是看不到它?
如果你的输入会发生什么看起来像''%ABC#\\%ABC#''? – Tomalak
您是否试图将我引入我的想法的设计缺陷或您的问题的目的是什么? 目前的结果是XXX \\ XXX,因为我不会以任何工作方式逃脱。 – bl4ckb0l7
我试图找出你期望在这种边缘情况下会发生什么。对于这种情况,解决方案的行为仍应该定义,因为“永远不会有这样的输入”不是一个好的假设。 – Tomalak