口径搜索和替换但保持单个字符

calibre search & replace but maintain a single character

我正在尝试删除许多

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

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

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

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

您正在寻找 positive lookahead

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

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


更新:换行符可能会出现问题,请查看这种情况。

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

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

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

感谢 Fabian 关于积极前瞻的一些信息;正是我需要的。