Regex Mystery - 你能帮我添加这些选项吗?

时间:2013-06-24 22:43:21

标签: php regex preg-replace preg-match markdown

问题

我的正则表达式下面的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

非常感谢,

1 个答案:

答案 0 :(得分:1)

我会用这个:

~<(h2|p|li|div)([^\>]+)?>([^\<]+)?</(h2|p|li|div)>~

这会在开头标记中记录class="xyz"之类的内容。

这将修复你提供的正则表达式,但是如果你想完成你在问题底部所描述的内容,你可能需要更复杂的东西。