Проблема регулярного выражения в 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[^>]*>)
Данные в первой группе захвата.
Вид сзади должен быть нулевой ширины, поэтому квантификаторы не допускаются.