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

Oracle PL/SQL中的正则表达式捕获组

  •  0
  • FrustratedWithFormsDesigner  · 技术社区  · 15 年前

    我正试图把自由格式的文本转换成更结构化的文本。我有一个复杂的模式,它匹配可用数据的绝大多数(远远高于可接受的最低限度),我想用它来帮助构造数据,而不是逐个字符分析文本。我刚刚遇到的问题是,Oracle似乎没有任何方法来处理捕获组(除非我不知何故错过了它?).

    例如,我的表达式有很多命名的捕获组,例如 ((?<runit_ID>\d+)-) (STAT_N|STTN|STAT|STN) ?(?<STAT>\w+) . 代码库完全是用pl/sql编写的,因此我不能使用c或其他什么东西来按名称引用捕获组。人们如何在pl/sql中解决这个问题?

    1 回复  |  直到 15 年前
        1
  •  1
  •   shoover    15 年前

    假设您使用的是Oracle10g或更高版本,则可以使用regexp_replace替换为backreferences。

    参见中的示例 Oracle docs for REGEXP_REPLACE 在这 article at regular-expressions.info .