Oracle正则表达式REGEXP\u REPLACE

Oracle正则表达式REGEXP\u REPLACE,regex,oracle,Regex,Oracle,我想替换一种特殊的字符串格式(忽略^之后出现的数字) 例: 在这里,我想替换所有出现的字符串[XYZ^abc^0^0],其中任何数字都可以代替^0^0,如[XYZ^abc^0^0]或[XYZ^abc^20^10]等 输入字符串:[XYZ^abc^0^1][dfgf^fgf^0^0][ggfgf^errer^0^0][XYZ^abc^20^1][mkkfg^oorjj^0^0][XYZ^abc^0^0][XYZ code> 预期输出:[dfgf^fgfgf^0^0][ggfgf^erer^0^0]

我想替换一种特殊的字符串格式(忽略^之后出现的数字)

例: 在这里,我想替换所有出现的字符串
[XYZ^abc^0^0]
,其中任何数字都可以代替
^0^0
,如
[XYZ^abc^0^0]
[XYZ^abc^20^10]

输入字符串:
[XYZ^abc^0^1][dfgf^fgf^0^0][ggfgf^errer^0^0][XYZ^abc^20^1][mkkfg^oorjj^0^0][XYZ^abc^0^0][XYZ code>

预期输出:
[dfgf^fgfgf^0^0][ggfgf^erer^0^0][mkkfg^oorj0^0]

我尝试了许多组合,包括以下组合,但没有成功:

SELECT
  REGEXP_REPLACE('[XYZ^abc^0^1][dfgf^fgfgf^0^0][ggfgf^ererer^0^0][XYZ^abc^20^1][mkkfg^oorjj^0^0][XYZ^abc^0^0]',
                 '[XYZ^abc^\^[[:digit:]]{1,}\^[[:digit:]]{1,}\]'
                 ) "REGEXP_REPLACE" from dual
谢谢你的帮助


谢谢

你需要避开方括号,方括号应该按字面意思处理。您没有转义所有的
^
字符,您还有一个额外的
^
字符

而且,
{1,}
可以写成
+

SELECT
  REGEXP_REPLACE('[XYZ^abc^0^1][dfgf^fgfgf^0^0][ggfgf^ererer^0^0][XYZ^abc^20^1][mkkfg^oorjj^0^0][XYZ^abc^0^0]',
                 '\[XYZ\^abc\^[[:digit:]]+\^[[:digit:]]+\]'
                 ) "REGEXP_REPLACE" from dual

\[XYZ\^abc^\d+\^\d+\]
替换为空。太棒了。。。非常感谢!真管用。。!