我需要从存储在Oracle数据库中的格式错误的XML中提取一些数据。 XPath表达式如下所示://image/type/text()
。一个以类似方式工作的正则表达式将是<image>.*?<type>(.+?)<\/type>
(具有用于多行匹配的适当标志)。
由于Oracle不支持任何形式的REGEXP_SUBSTR
匹配组,因此我不确定如何从Oracle CLOB中提取匹配组的集合(可能 n > 1成员)柱。有什么想法吗?
答案 0 :(得分:2)
AFAIK你无法直接使用Oracle正则表达式函数提取集合,但是你可以遍历字符串调用regex_substr
函数并将结果保存到集合(或任何你需要的)作为一种变通方法,类似于:
...
fOccurence := 0;
loop
fSubstr := regex_substr(fSourceStr, '<image>.*?<type>(.+?)<\/type>', 1, fOccurence, 'gci');
exit when fSubstr is null;
fOccurence := fOccurence + 1;
fResultStr := fResultStr || fSubstr;
end loop;
...