Калибр поиск и замена, но сохранить один символ

Я пытаюсь удалить много

</p><p class="calibre1">

но ТОЛЬКО когда за этой строкой сразу следует строчная буква в Caliber. Замените его на "", за которым следует строчная буква. (Когда есть заглавные буквы или цифры или что-то еще, строка должна остаться...) В регулярном выражении, чувствительном к регистру режиме, я могу легко найти эти строки с помощью этого регулярного выражения:

</p><p[^>]*>[a-z].....

НО, мне, конечно, нужно заменить строчные буквы также на то, что было раньше... Есть ли хороший способ сделать это, или мне нужно написать свою собственную функцию регулярного выражения для этого??

1 ответ

Решение

Вы ищете позитивный взгляд.

Ищи </p><p[^>]*>(?=[a-z]) и заменить его на [empty string],

(?=[a-z]) гарантирует, что он совпадает только в том случае, если за ним следует строчная буква, но он не использует указанную букву, удаляя только </p><p[^>]*> часть.

Я использовал решение @Fabian N. в Caliber для очистки после преобразования PDF-файлов в файлы EPUB. Мне пришлось немного изменить, добавив новую строку (например,\n) между закрывающим тегом абзаца в конце одной строки и последующим открывающим тегом в начале следующей строки, как показано здесь:

</p>\n<p class="calibre1">(?=[a-z])

Я бы подумал, что (</p>) охватывал бы новую строку (\n), но он не совпадал в Caliber, пока я не добавил новую строку.

Спасибо Фабиану за информацию о позитивном взгляде на будущее; именно то, что мне было нужно.

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