首页 > 解决方案 > 如何使用唯一的正则表达式从 Oracle 行中获取重复数据?

问题描述

我的要求是有一个正则表达式,其中我的数据使用单个标签打开,但有多个结束标签

表中的列数据如下所示:

%tag1% %data1%%tag2% %data2%%tag2% %data3%%tag2%

我在我的正则表达式中尝试 /g 进行全局搜索,但它似乎不起作用。

我的 oracle 查询如下所示:

select regexp_substr(column_data, '(%tag1%)(.+?)%tag2%',1,1,'n')) from table;

我想从三个不同行的表中获取 data1、data2 和 data3。

这里重要的是正则表达式必须递归解析第二个标签。

%tag1%(获取此数据)%tag2%

%tag1% ... %tag2% (获取此数据) %tag2%

%tag1% ... %tag2% ... %tag2% (获取此数据) %tag2%

.. 等等...

我只能得到第一次出现。

谁能帮我在单个选择查询中获取这些数据?谢谢。

标签: sqlregexoracle

解决方案


推荐阅读