我正在尝试在oracle中的插入符号之间提取值
字段的值
AAA_0^%CELEBRTE%^S~AAA_2^TOP^S~simpLE^True^S~AAA1^NICE^S~
输出
^%CELEBRTE% TOP True NICE
任何帮助将不胜感激
答案 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项要从数据中提取。
我不是正则表达的大师,作为我自己的练习,我用我认为的蛮力方法解决了这个问题。我可以看到一个重复的组模式来提取每个字符串,但在我的研究中,似乎没有办法做一个“重复反向引用”,自动创建新的捕获组。如果有其他人知道如何做到这一点,我欢迎你的意见。
关于正则表达式的几个方便的资源: