Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python *Calibre*正则表达式搜索并替换多个捕获短语的函数_Python_Regex_Calibre - Fatal编程技术网

Python *Calibre*正则表达式搜索并替换多个捕获短语的函数

Python *Calibre*正则表达式搜索并替换多个捕获短语的函数,python,regex,calibre,Python,Regex,Calibre,这是我一直在做的事情 这就是我在查找部分使用的内容-([img[)(.*)(]])) def replace(匹配、编号、文件名、元数据、字典、数据、函数、*args、**kwargs):返回match.group().replace('[img[,) 基本上是对一个单词(和周围的字符)进行分组,并在replace函数中对其进行修改。我的目标是能够在一行中使用多个字符串来实现这一点。这就是为什么我使用“replace”()的原因,因为我可以在一行中多次使用它 下面列出了一个i/o示例 [img

这是我一直在做的事情

这就是我在查找部分使用的内容-([img[)(.*)(]]))

def replace(匹配、编号、文件名、元数据、字典、数据、函数、*args、**kwargs):返回match.group().replace('[img[,)
基本上是对一个单词(和周围的字符)进行分组,并在replace函数中对其进行修改。我的目标是能够在一行中使用多个字符串来实现这一点。这就是为什么我使用“replace”()的原因,因为我可以在一行中多次使用它

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

[img[imagename.jpg]]

<img"imagename.jpg"/>
[img[imagename.jpg]]

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

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


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

好吧,你的编辑告诉我,我不知道你在问什么。你两个例子中的修改与对方有什么关系?谢谢你的耐心。对混淆表示歉意。让我们从我发布的新代码开始。我正在努力使用替换函数,如果我能够在其中使用分组。好的,那么你不必这样做使用正则表达式替换,但只需正则表达式搜索,然后在match对象上使用Python表达式来获取替换(尽管您的示例存在语法错误和其他问题,所以我仍然不确定)。尝试匹配我在回答中建议的模式,并替换为
“”.format(match.group())
。这确实取得了一些进展。下面是发生的情况。我肯定我把它搞砸了,但我修改了你的模式,因为它与文档中的任何内容都不匹配
\[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"/>