Python 返回的re.sub repl函数\1不替换组

Python 返回的re.sub repl函数\1不替换组,python,regex,replace,numbers,regex-group,Python,Regex,Replace,Numbers,Regex Group,我正在尝试为Python中的正则表达式子操作编写一个通用替换函数(尝试在2和3中),用户可以在其中提供正则表达式模式和匹配的替换。这可能只是一个简单的字符串替换,而不是使用匹配中的组进行替换 最后,我从用户那里得到了以下形式的词典: regex_dict = {pattern:replacement} 当我尝试通过此命令替换所有出现的图案时,替换将用于替换组号(例如\1),我调用以下操作: re.sub(pattern, regex_dict[pattern], text) 这和预期的一样,

我正在尝试为Python中的正则表达式子操作编写一个通用替换函数(尝试在2和3中),用户可以在其中提供正则表达式模式和匹配的替换。这可能只是一个简单的字符串替换,而不是使用匹配中的组进行替换

最后,我从用户那里得到了以下形式的词典:

regex_dict = {pattern:replacement}
当我尝试通过此命令替换所有出现的图案时,替换将用于替换组号(例如\1),我调用以下操作:

re.sub(pattern, regex_dict[pattern], text)
这和预期的一样,但是当找到匹配项时,我需要做额外的工作。基本上,我努力实现的目标如下:

replace_function(matchobj):
    result = regex_dict[matchobj.re]
    ##
    ## Do some other things
    ##
    return result

re.sub(pattern, replace_function, text)

我发现这适用于正常替换,但是re.sub在使用函数时不使用组信息来获取匹配

我还尝试将\1模式转换为\g,希望re.sub能够理解它,但没有成功

我错过了什么重要的东西吗

提前谢谢

附加说明:我使用字符串编译模式,以字节为单位,替换也以字节为单位。我的模式中有非拉丁字符,但我以字节读取所有内容,包括正则表达式替换将操作的文本

编辑 我只是想澄清一下,我事先不知道用户会提供什么样的替代品。它可以是普通字符串和组的某种组合,也可以只是字符串替换

解决方案
我怀疑您在寻找
.expand
,如果您有一个已编译的regex对象(例如),您可以提供一个字符串以供替换时考虑,例如:

import re

text = 'abc'
# This would be your key in the dict
rx = re.compile('a(\w)c') 
# This would be the value for the key (the replacement string, eg: `\1\1\1`)
res = rx.match(text).expand(r'\1\1\1') 
# bbb

“但是在使用函数时,re.sub不使用组信息来获取匹配”--您能详细说明一下吗?您可以从
matchobj.group
中获取(模式,替换)对(r'a(\w)c',r'\1\1\1')的组信息,对于文本“abc”,我应该获取“bbb”。这适用于字典查找,但在我使用该函数时不起作用,因为它将“\1\1\1”放在首位谢谢!现在它似乎正在工作,为了完整性,下面是我所做的更改:replace_函数(matchobj):repl=regex_dict[matchobj.re]####做一些其他事情#返回matchobj.expand(repl)re.sub(模式,replace#函数,文本)
import re

text = 'abc'
# This would be your key in the dict
rx = re.compile('a(\w)c') 
# This would be the value for the key (the replacement string, eg: `\1\1\1`)
res = rx.match(text).expand(r'\1\1\1') 
# bbb