我想用标签替换标签内的单行b
////标签h2
。h3
h4
h5
blockquote
h6
所以我想要这个:
^<[b|h[2-5]]>([^\.]+)</[b|h[2-5]]>$
替换为:
<h6>\1</h6>
但前提是它在一个blockquote
标签内,该标签位于不同的行上。我认为解决方案必须涉及对结束blockquote
标签的后视和对开头的负后视blockquote
,但我不确定如何实现这一点。
我想用标签替换标签内的单行b
////标签h2
。h3
h4
h5
blockquote
h6
所以我想要这个:
^<[b|h[2-5]]>([^\.]+)</[b|h[2-5]]>$
替换为:
<h6>\1</h6>
但前提是它在一个blockquote
标签内,该标签位于不同的行上。我认为解决方案必须涉及对结束blockquote
标签的后视和对开头的负后视blockquote
,但我不确定如何实现这一点。
正则表达式对于解析任意 HTML 非常不利,因为很多事情都可能出错。
话虽这么说:这个演示可能会让您入门。
这不能正确处理边缘情况。
<div><b>This thing</div></b>
将无法正确解析。
如果您知道您的输入格式正确并且没有太深的嵌套(例如,在其他东西<b>
中的 a中),那么它可能会起作用。<h2>
但是要解析 HTML,你真的需要一个 DOM 解析器。
现在,这不处理“blockquote
标签之间”的要求,但使用 Javascript(如果这是您正在使用的),这不是一个非常简单的任务示例。您必须一遍又一遍地运行相同的过程才能将所有元素转换为h6
.
如果您要改用 jQuery,则可以更安全地执行此操作:jsfiddle