Проблема регулярного выражения в Python: неверное регулярное выражение: для просмотра требуется шаблон с фиксированной шириной

Мне нужно сопоставить разрыв строки между двойными кавычками, как в:

<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 ответа

Решение

Питон re Модуль, как и большинство языков (за исключением.NET), не поддерживает просмотр с переменной длиной.

Разве вы не можете использовать группу захвата вместо этого?

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

Данные в первой группе захвата.

Вид сзади должен быть нулевой ширины, поэтому квантификаторы не допускаются.

Другие вопросы по тегам