匹配Oracle 10g2正则表达式中的组

时间:2010-10-19 16:17:05

标签: regex oracle xpath

我需要从存储在Oracle数据库中的格式错误的XML中提取一些数据。 XPath表达式如下所示://image/type/text()。一个以类似方式工作的正则表达式将是<image>.*?<type>(.+?)<\/type>(具有用于多行匹配的适当标志)。

由于Oracle不支持任何形式的REGEXP_SUBSTR匹配组,因此我不确定如何从Oracle CLOB中提取匹配组的集合(可能 n > 1成员)柱。有什么想法吗?

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;
...