Html 多行正则表达式替换标记中的标记?
我想用Html 多行正则表达式替换标记中的标记?,html,regex,lookbehind,negative-lookbehind,Html,Regex,Lookbehind,Negative Lookbehind,我想用h6标记替换blockquote标记中的单行b/h2/h3/h4/h5标记 所以我想要这个: ^<[b|h[2-5]]>([^\.]+)</[b|h[2-5]]>$ ^([^\.]+)$ 替换为: <h6>\1</h6> \1 但仅当它位于不同行上的blockquote标记内时。我认为解决方案必须包括对结束blockquote标记的查找和对开始blockquote的反向查找,但我不确定如何实现这一点。正则表达式对于解析任意HTML非常
h6
标记替换blockquote
标记中的单行b
/h2
/h3
/h4
/h5
标记
所以我想要这个:
^<[b|h[2-5]]>([^\.]+)</[b|h[2-5]]>$
^([^\.]+)$
替换为:
<h6>\1</h6>
\1
但仅当它位于不同行上的
blockquote
标记内时。我认为解决方案必须包括对结束blockquote
标记的查找和对开始blockquote
的反向查找,但我不确定如何实现这一点。正则表达式对于解析任意HTML非常糟糕,因为很多事情都可能出错
也就是说:可以让你开始
这不能正确处理边缘情况
<div><b>This thing</div></b>
这个东西
将无法正确解析
如果您知道您的输入格式良好,并且没有太深的嵌套(例如,
内的
内的其他内容),那么它可能会起作用。但是要解析HTML,您确实需要一个DOM解析器
现在,这并不能满足“betweenblockquote
tag”的要求,但是对于Javascript(如果您使用的是Javascript),这不是一个非常简单的任务。您必须反复运行相同的过程才能将所有元素转换为h6
如果您改用jQuery,您可以更安全地执行此操作:字符类不是组。如果这是针对任意文档结构,恐怕您没有使用XML解析器来实现此结果,可能是找错了方向。