使用regex替换单个中断标记为两个


replacing single break tags for two using regex

虽然意识到使用regex(而不是使用PHP dom操纵符)的某些html操作的陷阱/危险,但我试图实现一些应该非常简单而不是那么危险的东西。

基本上我有一些未清理的html副本从数据库,不使用段落,但换行标签来产生段落的效果。有时,用户只输入带有一个换行符的内容,这样文本行就会返回,但不会出现空行。在这种情况下,并且仅在这种情况下,我想用两个(<br><br>)替换单个<br>

所以作为一个例子…

This is <br>a test<br><br>example!  

将成为

This is <br><br>a test<br><br>example! 

注意第二组break是如何被单独留下的,因为它已经有2个标签。

简单地将<br>替换为<br>:)

替代:

(<br>)+

替换为:

<br><br>

你可以使用负向前看和向后看来解决这个问题:

(?<!<br>)<br>(?!<br>)

请看下面的例子:http://rubular.com/r/WYjoenH1SA

(?<!NOPREFIX)
(?!NOPOSTFIX)

第一部分阻止匹配,如果NOPREFIX存在,第二部分阻止匹配,如果NOPOSTFIX存在。