在有人抱怨不使用正则表达式来解析HTML之前,我引用了一个优雅的解决方案我之前的一个问题很快被标记为"answered"另一个问题的答案抱怨不使用正则表达式来解析HTML(最终从我的问题中删除了):Regex: Find groups of lowercase letters between HTML tag
我再次使用epubs(在Sigil中),这次清理了InDesign CC的XHTML输出 . 与以前的ID版本不同,它现在围绕许多具有额外 <div>
标签的对象,用于某种定位/布局原因 . 我正在编写自己的干净CSS,因此在不生成CSS的情况下导出epub,在其他 <div>
周围留下无关的 <div>
标签,有时包含不必要的 <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
替换以保留内容和第一个缩进(尽管缩进不是绝对必要的) .
这个问题是我必须多次 find/replace all 才能获得并删除所有嵌套的不必要的 <div>
.
这是不是很好,或者是否有像我上面为此目的链接的解决方案?