正则表达式以排除Postgresql中的一些HTML标签

有没有一种方法可以维护一些标签以及标签之间的文本,使用Postgresql中的正则表达式从HTML文本中排除不需要的标签? 我想使用regexp_replace,因为regexp_matches会导致一组数组,当我在很长的文本中使用时会减慢查询速度。

我设法匹配了要保留的标签。例如:

select regexp_replace(
'<diversity bad text> <div good text> <br> <invalid> </div> mantain1 <division> mantain2 </invalid> mantain3',E'</?(div|br)( [^>]*?>|>)','OUT','gi');

结果:

<diversity bad text> OUT OUT <invalid> OUT mantain1 <division> mantain2 </invalid> mantain3

但是当我尝试反转比赛时,事情就失去了控制。

我使用负前瞻得到的最接近的是:

select regexp_replace(
'<diversity bad text> <div good> <br> <invalid> </div> mantain1 <division> mantain2 </invalid> mantain3',E'<(?!div|br)(.+?)>','gi');

结果:

<diversity bad text> <div good text> <br> OUT OUT mantain1 <division> mantain2 OUT mantain3

但是显然我不是想要的。

文本的预期结果:

<diversity bad text> <div good> <br> <invalid> </div> mantain1 <division> mantain2 </invalid> mantain3

是:

OUT <div good> <br> OUT </div> mantain1 OUT mantain2 OUT mantain3
fleia 回答:正则表达式以排除Postgresql中的一些HTML标签

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2949299.html

大家都在问