我的正则表达式下面的PHP preg_replace工作得很好
'|(?<!</h2>)\s*\n(?!<h2>)|'
但是我更倾向于'h2'部分是一个搜索'h2 | p | li | div'等任何部分的部分,只要它能从我给出的选择中找到它。
我尝试了各种各样的
'|(?<!</(?:h2|p|li|div)>)\s*\n(?!<(?:h2|p|li|div)>)|'
但它似乎无法奏效。
如果有人能指出我正确的方向,这将是一个很好的帮助,因为我正在解决我昨天发布的问题的替代方案。
我的代码BTW的目标是找到所有线路断点(\ n),在线路中断之前没有/ h2或/ p等,并且在线路断开后没有h2或p等。所以....
example\n <- find this
example\n <- find this
example\n <- not this (as <h2> next starts line)
<h2>example\n <- find this
example</h2>\n <- not this (as </h2> ends this line)
example\n <- find this
非常感谢,
答案 0 :(得分:1)
我会用这个:
~<(h2|p|li|div)([^\>]+)?>([^\<]+)?</(h2|p|li|div)>~
这会在开头标记中记录class="xyz"
之类的内容。
这将修复你提供的正则表达式,但是如果你想完成你在问题底部所描述的内容,你可能需要更复杂的东西。