在ORACLE中提取鲤鱼标志之间的价值

时间:2016-11-30 22:16:28

标签: regex oracle

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

字段的值

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

输出

^%CELEBRTE% TOP True NICE

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

这有效:

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项要从数据中提取。

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

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

A regular expression tester

A basic tutorial