*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
будет работать (но я ожидаю, что это наиболее вероятная форма для работы в неизвестной среде регулярных выражений).