-1

我正在尝试删除许多

</p><p class="calibre1">

但仅当此字符串后紧跟 Calibre 中的小写字母时。将其替换为 '' 后跟小写字母。(当有大写字母或数字或其他任何东西时,字符串应该保留......)在正则表达式,区分大小写的模式下,我可以使用这个正则表达式轻松找到这些字符串:

</p><p[^>]*>[a-z].....

但是,我当然也需要用以前的字母替换小写字母。有没有一种巧妙的方法可以做到这一点,或者我需要为此编写自己的正则表达式函数吗?

4

2 回答 2

2

您正在寻找积极的前瞻性

搜索</p><p[^>]*>(?=[a-z])并将其替换为[empty string].

确保它仅在(?=[a-z])后跟一个小写字母时才匹配,但它不消耗所述字母,仅删除</p><p[^>]*>部分。


更新:您可能会遇到换行符的问题,请查看@AFK在这种情况下的回答。

于 2018-08-18T19:36:53.263 回答
1

在将 PDF 转换为 EPUB 文件后,我在 Calibre 中使用了 @Fabian N. 的解决方案进行清理。\n我必须通过在一行末尾的结束段落标记和下一行开头的后续开始标记之间添加一个换行符(例如,)来进行一些修改,如下所示:

</p>\n<p class="calibre1">(?=[a-z])

我原以为 ( </p>) 会包含换行符 ( \n),但在我添加换行符之前它在 Calibre 中不匹配。

感谢 Fabian 对积极的前瞻性的看法;正是我需要的。

于 2019-12-26T01:11:52.607 回答