Python 反向引用正则表达式问题:无效的正则表达式:反向引用需要固定宽度的模式

3 投票
2 回答
2878 浏览
提问于 2025-04-18 07:11

我需要在双引号之间匹配换行符,比如:

<p class="calibre1">“This is the first sentence.</p>
<p class="calibre1">And this is the second!”</p>

这样可以匹配 </p> <p class="calibre1">

我用这个正则表达式 (?<=“[^”]*)</p>\s*<p[^>]*>(?!“) 实现了这个功能,但当我尝试非手动使用时,出现了标题中提到的错误:“无效的正则表达式:回顾需要固定宽度模式”。我需要这个正则表达式用于电子书管理/编辑程序 Calibre,它使用 Python 作为正则表达式引擎。上面的正则表达式在手动搜索书籍时有效,但当我尝试将其作为“常用选项”(在每次电子书转换时运行)时,就出现了这个错误。

我不明白如何在没有可变宽度回顾的情况下做到这一点,因为你无法知道从左侧的双引号到换行符的长度。非常感谢任何帮助!

2 个回答

0

向后查找的匹配必须是零宽度的,也就是说,它们不能占用任何空间,因此不能使用数量词。

3

Python的re模块和大多数编程语言一样(除了.NET),不支持可变长度的回顾匹配。

那你不能用一个捕获组来代替吗?

“[^”]*(</p>\s*<p[^>]*>)

数据在第一个捕获组中。

撰写回答