Oracle POSIX 不匹配正则表达式
Oracle POSIX dosent match Regular Expression
我正在尝试用正则表达式替换换行符。我有两个数据库 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/>', 1, 0, 'i') as TEST
FROM txttrans
感谢@Alex,
可行的解决方案:
SELECT id, deinfo, FIRMID,
REGEXP_REPLACE(DeInfo, '(</ul>)([[:space:]][^<])([^<br />]{0})', '</ul><br/>', 1, 0, 'i') as TEST
FROM txttrans;
我正在尝试用正则表达式替换换行符。我有两个数据库 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/>', 1, 0, 'i') as TEST
FROM txttrans
感谢@Alex,
可行的解决方案:
SELECT id, deinfo, FIRMID,
REGEXP_REPLACE(DeInfo, '(</ul>)([[:space:]][^<])([^<br />]{0})', '</ul><br/>', 1, 0, 'i') as TEST
FROM txttrans;