我目前正在尝试对 pdf 进行一些基本的清理,以便可以将其转换为 ePub 以在我的电子阅读器上使用。我所做的只是删除页码(简单)和脚注(到目前为止很难)。基本上,我想要一个表达式,在每个脚注的开头找到标签模式( <bar>
后跟换行符、数字、字母或引号),选择模式及其后面的所有内容,直到它到达<hr/1>
标签在下一页的开头。这是一些示例文本:
The phantoms, for so they then seemed, were flitting on the other side of <br>
the deck, and, with a noiseless celerity, were casting loose the tackles and bands <br>
of the boat which swung there. This boat had always been deemed one of the spare boats <br>
technically called the captain’s, on account of its hanging from the starboard quarter.<br>
The figure that now stood by its bows was tall and swart, with one white tooth <br>
evilly protruding from its steel-like lips. <br>
<br>
1 "Hardly" had they pulled out from under the ship’s lee, when a <br>
fourth keel, coming from the windward side, pulled round under the stern, <br>
and showed the five strangers <br>
127 <br>
<br>
<hr/>
由于所有脚注都以这种方式格式化,因此我想选择以(注意空格)开头并以标签 <br>
结尾的每一组行。<hr/>
这是我第一次真正尝试使用正则表达式,所以我尝试了一些解决方案的尝试:
\s<br>\n\d+\s[a-zA-Z“].*
:这正确选择<br>
了脚注的第一行,但在中断处停止。\s<br>\n\d+\s[a-zA-Z“].*\n.*\n.*\n.*\n.*\n.*
选择正确的行数,但这显然只适用于恰好有三行文本的脚注。\s<br>\n\d+\s[a-zA-Z“]((.*\n)*)<hr\/>
从第一个脚注的正确位置开始,但最终选择整个文档的其余部分。我对这个表达式的解释是“以 开头<br>
,一个数字后跟一个空格,后跟一个字母或引号,然后选择包括换行符在内的所有内容,直到到达<hr/>
。”\s<br>\n\d+\s[a-zA-Z“]((?:.*\r?\n?)*)<hr\/>\n
与(2)相同的想法,具有相同的结果,尽管我对正则表达式不够熟悉,无法完全理解这个是怎么回事。
基本上,我的问题是我的表达式要么排除换行符(并忽略结束模式),要么包含每个换行符并返回整个文本(显然仍然忽略结束模式。
如何让它只返回模式之间的文本,包括换行符?