代码之家  ›  专栏  ›  技术社区  ›  yawn

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

  •  1
  • yawn  · 技术社区  · 14 年前

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

    因为Oracle不支持任何形式的匹配组 REGEXP_SUBSTR 我不确定如何提取集合(可能 n >1个成员)来自Oracle CLOB列的匹配组。有什么想法吗?

    1 回复  |  直到 14 年前
        1
  •  2
  •   andr    14 年前

    afaik不能用oracle regex函数direcly提取集,但是可以迭代字符串调用 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;
    ...