REGEXP_REPLACE反向引用

时间:2014-08-14 08:32:45

标签: sql regex oracle

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

这是我得到的:


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

我的意见

(1101 + 1102) * 1103 + 1104 + 1105

预期输出:

(T1101 + T1102) * T1103 + T1104 + T1105

代码:

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

结果我有:

(T\1 + T\1) * T\1 + T\1 + T\1

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

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

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

注意:

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

一些Stack-overflow帖子的引用:

Ref1Ref2Ref3

参考Oracle文档:

REGEXP_REPLACE

1 个答案:

答案 0 :(得分:5)

\1back reference,可以通过将其括在括号(...)

中来查找以前匹配的组和组来捕获它们

应该是

([0-9]+)