在有人抱怨不使用正则表达式来解析HTML之前,我引用了一个优雅的解决方案,我很快就将其标记为“已回答”另一个问题的答案抱怨不使用正则表达式来解析HTML(这是最终从我的问题中删除了):Regex: Find groups of lowercase letters between HTML tag
我再次使用epubs(在Sigil中),这次清理了InDesign CC的XHTML输出。与以前的ID版本不同,它现在围绕许多具有额外<div>
标签的对象,用于某种定位/布局原因。我正在编写自己的干净CSS,因此在不生成CSS的情况下导出epub,在其他<div>
周围留下无关的<div>
标记,有时包含嵌套结构的不必要{{} 1}} S上。
我正在处理的一个例子:
<div>
注意:<div><!--unnecessary-->
<div class="figure-box">
<h4 class="f-n"><b class="b">Figure 1.3: Foobar</b></h4>
<div><!--unnecessary-->
<div class="figure">
<img alt="foo" src="../Images/bar.jpg"/>
</div>
</div>
<p class="f-ct">This is a caption, yadda yadda.</p>
<p class="f-src">Source: Copyright blah blah.</p>
</div>
</div>
条评论是说明性的,在实际代码中不存在。
我已经编写了这个正则表达式,试图删除没有样式的<!--unnecessary-->
标签,并取得了一些成功,但我希望有一个更优雅的解决方案:
<div>
上面的字符串匹配最外面的^(\s*)<div>\n\s*(<div class=".+?">.+?</div>)\n\1</div>
,然后我可以用<div>
替换以保留内容和第一个缩进(尽管缩进不是绝对必要的)。
这个问题是我必须多次查找/替换所有才能获取并删除嵌套的所有不必要的\1\2
。
这是否会得到满足,或者是否有类似我上面为此目的链接的解决方案?