我之前已经问过这个问题,但之前的回复都没有对我有用。我有一张PDF,我试图用Calibre转换。在转换过程中,我想摆脱页眉和页脚,看起来像这样:
<hr/>
<a name=9></a>viii<br>
<i>Introduction</i><br>
<hr/>
<a name=10></a><i>Introduction</i><br>
ix<br>
我使用了以下正则表达式,它可以很好地选择所有这些实例:
(?s)<hr/>(.*?)</a>(.*?)<br>(.*?)<br>
但是,当有章节标题时,PDF代码会这样说:
<hr/>
<a name=8></a><a href="index.html#6">INTRODUCTION</a><br>
这也是我的正则表达式。我想改变我的代码以忽略章节标题。我已经尝试了几十种替换
的组合(.*?)
用
之类的东西[^index]
^((?!index).)*$
/(?s)^((?!index).)*$/
我也尝试过使用href,=和&#34;而不是&#34;索引,&#34;但这些代码都没有选择任何内容。我需要在代码中更改所有内容,以便在不删除章节标题的情况下删除页眉和页脚?提前谢谢!
答案 0 :(得分:1)
这并不是那么难。假设您的HTML总是很简单,并且不包含引号中的<
或>
等棘手内容,请添加以下内容:
(?:<a[^>]+href=[^>]+>.*?</a>)?
在当前正则表达式中的</a>
之后立即执行。该位表示标题可能存在,也可能不存在,无论哪种方式,都不要将其取出(非捕获组(?:)
。)