REGEXP_REPLACE反向引用

sim*_*sim 3 regex sql oracle

我已经阅读了有关REGEXP_REPLACE功能的Oracle文档,但它没有按预期工作

这是我得到的:


我的目标:为每组连续数字连接一个字符

我的意见:

(1101 + 1102) * 1103 + 1104 + 1105
Run Code Online (Sandbox Code Playgroud)

预期产量:

(T1101 + T1102) * T1103 + T1104 + T1105
Run Code Online (Sandbox Code Playgroud)

码:

SELECT
  REGEXP_REPLACE('(1101 + 1102) * 1103 + 1104 + 1105',
                 '[0-9]+',
                 'T\1') "REZ"
  FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

结果我得到了:

(T\1 + T\1) * T\1 + T\1 + T\1
Run Code Online (Sandbox Code Playgroud)

我搜索了许多Stack-overflow帖子,他们似乎都在使用这个场景而没有任何关于\ 1的问题

还尝试了不同的地方来测试代码:Tod for oracle,SqlPlus和另一个应用程序,它们都给了我相同的结果.

那么,有人请告诉我我的代码有什么问题吗?

注意:

我不怀疑我的正则表达式有任何问题,之前在oracle的不同场景中进行过测试,并且它的工作正常.另外,找到匹配,但替换部分不起作用.

一些Stack-overflow帖子的引用:

Ref1,Ref2,Ref3

参考Oracle文档:

REGEXP_REPLACE

Bra*_*raj 5

\1后面参考,看起来对于先前匹配的基团和基团可以通过它包围在括号内被捕获(...)

它应该是

([0-9]+)
Run Code Online (Sandbox Code Playgroud)