2

在意识到使用正则表达式(而不是使用 PHP dom 操纵器)进行某些 html 操作的陷阱/危险的同时,我正在尝试实现一些应该非常简单且没有那么冒险的东西。

基本上我有一些未清理的 html 副本来自一个不使用段落但使用换行标记来产生段落效果的数据库。有时虽然用户只输入了一个中断的内容,以便文本行返回但没有出现空行。在这种情况下,并且仅在这种情况下,我想<br>用两个(<br><br>​​)替换那个单曲。

所以举个例子...

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

会成为

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

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

4

2 回答 2

5

只需将出现的一个或多个替换<br><br>:)

替换什么:

(<br>)+

用。。。来代替:

<br><br>
于 2013-05-28T14:37:27.283 回答
3

您可以使用负前瞻和后视来解决此问题:

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

请参阅此处的示例:http ://rubular.com/r/WYjoenH1SA

(?<!NOPREFIX)
(?!NOPOSTFIX)

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

于 2013-05-28T14:40:19.457 回答