* Calibre * Regex使用多个捕获的短语搜索和替换功能

时间:2018-03-14 04:02:07

标签: python regex calibre

以下是我一直在使用的软件......

这就是我在查找部分使用的内容 - ([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"(.*)/>)

基本上对单词(和周围的字符)进行分组并在替换函数中对其进行修改。我的目标是能够连续使用多个字符串。这就是我使用“替换”的原因,因为我可以连续多次使用。

下面列出了一个i / o示例。

[img[imagename.jpg]]

<img"imagename.jpg"/>

1 个答案:

答案 0 :(得分:0)

如果您的示例中text1text3消失的事实只是一种疏忽,我认为您不需要多个捕获组,只需要一个文件名。括号和img字符串是常量,因此您可以重新创建它们。

您的模式应该类似于\[img\[([^]])\]\]。您可以将其替换为<img src="\1">

我说&#34;类似&#34;这种模式,因为我不完全确定你需要如何格式化它以确保它到达正则表达式引擎,所有转义字符都保持不变。在Python中,您想要使用原始字符串,但我不知道您如何使用Calibre应用正则表达式。同样,我也不知道使用\1的反向引用是否有效(但我希望这种形式最适合在未知的正则表达式环境中工作)。