虽然意识到使用正则表达式进行某些html操作的陷阱/危险(而不是使用PHP dom操纵器),但我正在尝试实现一些非常简单且没有风险的东西。
基本上我有一些来自数据库的未清理的html副本,它不使用段落而是使用换行标记来产生段落的效果。有时虽然用户只输入了一个中断的内容,但文本行返回但没有出现空白行。在这种情况下,仅在这种情况下,我想用两个<br>
替换单个<br><br>
。
以此为例......
This is <br>a test<br><br>example!
会变成
This is <br><br>a test<br><br>example!
请注意第二组中断是如何保留的,因为它已经有2个标记。
答案 0 :(得分:5)
只需使用<br>
替换<br>
的一个或多个出现:)
替换:
(<br>)+
替换为:
<br><br>
答案 1 :(得分:3)
您可以使用negative lookahead and lookbehind来解决此问题:
(?<!<br>)<br>(?!<br>)
请参阅此处的示例:http://rubular.com/r/WYjoenH1SA
(?<!NOPREFIX)
(?!NOPOSTFIX)
如果NOPREFIX
存在,则第一部分阻止匹配 - 如果存在NOPOSTFIX
则阻止第二部分匹配。