Regex 在ORACLE中提取插入符号之间的值

Regex 在ORACLE中提取插入符号之间的值,regex,oracle,Regex,Oracle,我正在尝试提取oracle中插入符号之间的值 字段的值 AAA_0^%CELEBRTE%^S~AAA_2^TOP^S~simpLE^True^S~AAA1^NICE^S~ 输出 ^%CELEBRTE% TOP True NICE 如果您有任何帮助,我们将不胜感激。此功能: SQL> SELECT regexp_replace('AAA_0^%CELEBRTE%^S~AAA_2^TOP^S~simpLE^True^S~AAA1^NICE^S~' 2

我正在尝试提取oracle中插入符号之间的值

字段的值

AAA_0^%CELEBRTE%^S~AAA_2^TOP^S~simpLE^True^S~AAA1^NICE^S~
输出

^%CELEBRTE% TOP True NICE
如果您有任何帮助,我们将不胜感激。

此功能:

SQL> SELECT regexp_replace('AAA_0^%CELEBRTE%^S~AAA_2^TOP^S~simpLE^True^S~AAA1^NICE^S~'
  2                      , '^[^^]*\^([^^]*)\^[^^]*\^([^^]*)\^[^^]*\^([^^]*)\^[^^]*\^([^^]*)\^.*'
  3                      , '\1 \2 \3 \4' ) rr
  4    FROM dual;

RR
------------------------
%CELEBRTE% TOP True NICE
它明确地假设您只有4项要从数据中提取

我不是ReGeXP大师,作为我自己的练习,我用我认为是蛮力的方法解决了这个问题。我可以看到组的重复模式来提取每个字符串,但在我的研究中,似乎没有办法进行“重复反向引用”,自动创建新的捕获组。如果其他人知道这样做的方法,我欢迎你的意见

关于正则表达式的两个方便的资源:


那么,您尝试过什么?regexp\u substr将是一个起点。