*Calibre* Regex Поиск и замена функции с несколькими захваченными фразами

Вот то, что я работал с Софар...

Это то, что я использую в разделе поиска - ([img[)(.*)(]])

def replace(match, number, file_name, metadata, dictionaries, data, functions, *args, **kwargs): return match.group().replace('[img[,<img"')

Что я пытаюсь достичь, это что-то вроде этого

def replace(match, number, file_name, metadata, dictionaries, data, functions, *args, **kwargs): return match.group().replace('[img[(.*)]],<img"(.*)/>)

в основном группирует слово (и окружающие символы) и изменяет его в функции замены. Моя цель - сделать это с несколькими строками подряд. Вот почему я использую "заменить (", как я могу положить это несколько раз подряд.

Один пример ввода / вывода приведен ниже.

[img[imagename.jpg]]

<img"imagename.jpg"/>

1 ответ

Если тот факт, что text1 а также text3 исчез в вашем примере просто упущение, я не думаю, что вам нужно несколько групп захвата, только одна для имени файла. Скобки и img Строки являются постоянными, поэтому вы можете воссоздать их.

Ваш шаблон должен быть что-то вроде \[img\[([^]])\]\], Вы бы заменили его <img src="\1">,

Я говорю "что-то вроде" этого шаблона, потому что я не совсем уверен, как вам нужно отформатировать его, чтобы убедиться, что он попадает в механизм регулярных выражений со всеми целыми символами escape. В Python вы хотите использовать необработанную строку, но я понятия не имею, как вы применяете регулярное выражение с помощью Caliber. Точно так же я не знаю, использует ли обратная ссылка \1 будет работать (но я ожидаю, что это наиболее вероятная форма для работы в неизвестной среде регулярных выражений).

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