Oracle регулярное выражение POSIX - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь заменить символы новой строки на регулярные выражения. Я получил две базы данных 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>

Цель состоит в том, чтобы ставить </ul><br/> после каждого </li></ul> где следующий символ является новой строкой, НЕ следуя моему символу <.

Рабочее решение в 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

Ответы [ 2 ]

1 голос
/ 02 марта 2020

Поскольку Oracle не поддерживает просмотр в будущее, вы можете вместо этого попробовать использовать обычную группу захвата и использовать ее в качестве замены.

SELECT id, deinfo, FIRMID,
REGEXP_REPLACE(DeInfo, '(<\/ul>)(\r ? \n)([^<])', '</ul><br/>\3', 1, 0, 'i') as TEST
FROM txttrans
0 голосов
/ 02 марта 2020

Спасибо @ Alex,

рабочему решению:

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