Python look-behind正则表达式问题:无效的正则表达式:look-behind需要固定宽度模式

时间:2014-05-21 11:00:18

标签: python regex calibre

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

<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[^>]*>(?!“),但是我得到了标题中描述的错误:“无效的正则表达式:后视需要固定宽度模式”当我尝试非手动使用它。我需要这个正则表达式用于电子书管理/编辑程序Caliber,它使用Python作为其正则表达式引擎。上面的正则表达式适用于手动搜索书籍,但是当我尝试将正则表达式作为“常用选项”(在每次电子书转换时运行)时,我会收到该错误。

我没有看到如果没有可变宽度的后视可以做到这一点,因为你无法知道从左双引号到换行符有多长。非常感谢帮助!

2 个答案:

答案 0 :(得分:2)

Python re模块,因为大多数语言(除了.NET之外)都不支持可变长度的后视。

您不能使用capturing group吗?

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

first capturing group中的数据。

答案 1 :(得分:0)

Lookbehinds需要为零宽度,因此不允许使用量词。