2

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

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

这将匹配</p> <p class="calibre1">

现在,我得到了这个正则表达式,但是当我尝试非手动使用它时,(?<=“[^”]*)</p>\s*<p[^>]*>(?!“)我得到了标题中描述的错误:“无效的正则表达式:look-behind requires fixed-width pattern ”。我需要这个正则表达式用于电子书管理/编辑程序 Calibre,它使用 Python 作为其正则表达式引擎。上面的正则表达式适用于手动搜索一本书,但是当我尝试将正则表达式包含为“常用选项”(在每次电子书转换时运行)时,我得到了那个错误。

如果没有可变宽度的后视,我看不出怎么可能做到这一点,因为你不知道从左双引号到换行符会有多长时间。帮助将不胜感激!

4

2 回答 2

2

Python re module, as most languages (with the notable exception of .NET), doesn't support variable length lookbehind.

Can't you use a capturing group instead ?

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

Data in the first capturing group.

于 2014-05-21T11:49:35.210 回答
0

Lookbehinds 必须是零宽度,因此不允许使用量词。

于 2014-05-21T11:06:26.157 回答