Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 多行正则表达式替换标记中的标记?_Html_Regex_Lookbehind_Negative Lookbehind - Fatal编程技术网

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解析器

现在,这并不能满足“between
blockquote
tag”的要求,但是对于Javascript(如果您使用的是Javascript),这不是一个非常简单的任务。您必须反复运行相同的过程才能将所有元素转换为
h6


如果您改用jQuery,您可以更安全地执行此操作:

字符类不是组。如果这是针对任意文档结构,恐怕您没有使用XML解析器来实现此结果,可能是找错了方向。