RegEx来修复<p>中的<div>

时间:2016-08-05 10:21:29

标签: html regex

我需要修复无效的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>

提前致谢。

1 个答案:

答案 0 :(得分:1)

这个正则表达式适用于PCRE风格的正则表达式 就像PHP或Notepad ++中使用的一样。

(?:<p>|\G)[^<>]*?\K(<div>.*?<\/div>)|<\/p>\K(?R)

替换为:<p>\1</p>

可以尝试here