-1

这是我迄今为止一直在使用的东西......

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

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

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

[img[imagename.jpg]]

<img"imagename.jpg"/>
4

1 回答 1

0

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

您的模式应该类似于\[img\[([^]])\]\]. 你会用<img src="\1">.

我说“类似”该模式是因为我不完全确定您需要如何格式化它以确保它到达正则表达式引擎时所有转义字符都完好无损。在 Python 中,您想使用原始字符串,但我不知道如何使用 Calibre 应用正则表达式。同样,我不知道反向引用 using\1是否有效(但我希望这是最有可能在未知的正则表达式环境中工作的形式)。

于 2018-03-14T06:52:53.920 回答