Regex 正则表达式以排除Postgresql中的某些HTML标记
有没有办法维护一些标记和标记之间的文本,排除使用Postgresql中正则表达式的HTML文本中不需要的标记? 我想使用regexp\u replace,因为当我在很长的文本中使用regexp\u时,regexp\u匹配会产生一组数组,这会减慢查询速度 我设法匹配我想要保留的标签。例如:Regex 正则表达式以排除Postgresql中的某些HTML标记,regex,postgresql,regex-negation,Regex,Postgresql,Regex Negation,有没有办法维护一些标记和标记之间的文本,排除使用Postgresql中正则表达式的HTML文本中不需要的标记? 我想使用regexp\u replace,因为当我在很长的文本中使用regexp\u时,regexp\u匹配会产生一组数组,这会减慢查询速度 我设法匹配我想要保留的标签。例如: select regexp_replace( '<diversity bad text> <div good text> <br> <invalid> </
select regexp_replace(
'<diversity bad text> <div good text> <br> <invalid> </div> mantain1 <division> mantain2 </invalid> mantain3',
E'</?(div|br)( [^>]*?>|>)', 'OUT','gi');
选择regexp\u replace(
“
mantain1 mantain2 mantain3”,
E']*?>|>)'、“OUT”和“gi”);
结果:
<diversity bad text> OUT OUT <invalid> OUT mantain1 <division> mantain2 </invalid> mantain3
<diversity bad text> <div good text> <br> OUT OUT mantain1 <division> mantain2 OUT mantain3
OUT OUT mantain1 mantain2 mantain3
但当我试图逆转比赛时,一切都失去了控制
我使用负向前看得到的最接近的结果是:
select regexp_replace(
'<diversity bad text> <div good> <br> <invalid> </div> mantain1 <division> mantain2 </invalid> mantain3',
E'<(?!div|br)(.+?)>', 'OUT','gi');
选择regexp\u replace(
“
mantain1 mantain2 mantain3”,
E’、‘OUT’、‘gi’;
结果:
<diversity bad text> OUT OUT <invalid> OUT mantain1 <division> mantain2 </invalid> mantain3
<diversity bad text> <div good text> <br> OUT OUT mantain1 <division> mantain2 OUT mantain3
输出曼丹1曼丹2输出曼丹3
但显然不是我想要的
案文的预期结果:
<diversity bad text> <div good> <br> <invalid> </div> mantain1 <division> mantain2 </invalid> mantain3
mantain1 mantain2 mantain3
是:
OUT
OUT mantain1 OUT mantain2 OUT mantain3
预期结果是什么?试试E'\\s*]*>'
这是一个很棒的Wiktor。它工作得很好。我编辑了这篇文章以包含预期的结果。