我需要修复无效的html(Ps中的DIV)。我试图找到一个正则表达式来解决它,但我不能。正则表达式必须用<DIV>...</DIV>
替换Ps中的</p><DIV>...</DIV><p>
,而不是Ps之外的DIV。
类似(PSEUDOEXPRESSION):
s/(<p>)(NOT_</p>*)(<div>.*?</div>)/$1$2</p>$3<p>/
这是最初的html(错误):
<p>
text 1
<div>inside div 1</div>
<div>inside div 2</div>
text 2
</p>
text 3
<div>inside div 3</div>
text 4
<p>
text 5
<div>inside div 4</div>
text 6
</p>
以及它应该如何:
<p>
text 1
</p><div>inside div 1</div><p>
</p><div>inside div 2</div><p>
text 2
</p>
text 3
<div>inside div 3</div>
text 4
<p>
text 5
</p><div>inside div 4</div><p>
text 6
</p>
提前致谢。
答案 0 :(得分:1)
这个正则表达式适用于PCRE风格的正则表达式 就像PHP或Notepad ++中使用的一样。
(?:<p>|\G)[^<>]*?\K(<div>.*?<\/div>)|<\/p>\K(?R)
替换为:<p>\1</p>
可以尝试here