Oracle POSIX不匹配正则表达式



我正在尝试用正则表达式替换换行符。我有两个数据库Oralce和MySQL。SQL语句在MySQL上运行良好,但在Oralce上则不然。

这是我的示例文本:

<ul>
<li>Was soll erreicht worden sein, wenn man das Projekt durchgeführt hat?</li>
</ul>
Formulieren Sie immer konkret.
<ul>
<li><strong><span style="color: #800000;">Wirtschaftliche Ziele</span></strong> (z. B.: Umsatzsteigerung im betroffenen Produktbereich: 20% im 3. Quartal des ersten Geschäftsjahres)</li>
</ul>
<ul>
<li>Test</li>
</ul>

目标是在每个</li></ul>之后放置一个</ul><br/>,其中下面的字符是换行符,而不是后面的字符<

MySQL中的工作解决方案:

SELECT *,
REGEXP_REPLACE(DeInfo, '(</ul>)(r?n)(?=[^<])', '</ul><br/>') as newDeInfo,
DeInfo
FROM txttrans 

Oralce声明无效:

SELECT id, deinfo, FIRMID,
REGEXP_REPLACE(DeInfo, '(</ul>)(r ? n)(?=[^<])', '</ul><br/>', 1, 0, 'i') as TEST
FROM txttrans

由于Oracle不支持前瞻性,您可以尝试使用普通捕获组,并在替换中使用它。

SELECT id, deinfo, FIRMID,
REGEXP_REPLACE(DeInfo, '(</ul>)(r ? n)([^<])', '</ul><br/>3', 1, 0, 'i') as TEST
FROM txttrans

感谢@Alex,

工作解决方案:

SELECT id, deinfo, FIRMID,
REGEXP_REPLACE(DeInfo, '(</ul>)([[:space:]][^<])([^<br />]{0})', '</ul><br/>2', 1, 0, 'i') as TEST
FROM txttrans;

最新更新