0

问题

我下面的 PHP preg_replace 正则表达式效果很好

 '|(?<!</h2>)\s*\n(?!<h2>)|'

但是,我更希望“h2”部分是搜索任何“h2|p|li|div”等的部分,只要它可以从我给它的选择中找到。

我已经尝试过各种各样的

'|(?<!</(?:h2|p|li|div)>)\s*\n(?!<(?:h2|p|li|div)>)|'

但这似乎行不通。

如果有人能指出我正确的方向,这将是一个很大的帮助,因为我正在解决这个问题,以替代我昨天发布的问题。

额外说明

我对代码 BTW 的目标是查找在换行之前没有 /h2 或 /p 等并且在换行后没有 h2 或 p 等的所有换行符 (\n)。所以....

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

非常感谢,

4

1 回答 1

1

我会用这个:

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

这说明class="xyz"了开始标签中的内容。

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

于 2013-06-25T00:30:58.670 回答