re.sub("([^\\[\s\\]]+)([\\]\s]*)( [>|=|<] )",replace(r'\1')+r'\2'+r'\3',s)
这不会将第一个组传递给替换函数,而是将r'\1'
作为字符串传递。
请说明出了什么问题。
答案 0 :(得分:5)
您正在将字符串传递给方法replace。
该组仅在sub
方法中进行评估。您可以单独search
来获取结果,但未经测试,因为您尚未发布s
或replace
函数的值:
pattern = "([^\\[\s\\]]+)([\\]\s]*)( [>|=|<] )"
re.sub(pattern, replace(re.search(pattern, s).group(1))+r'\2'+r'\3',s)
以下是另一种可能更适合您的方法:
# this method is called for every match
def replace(match):
group1 = match.group(1)
group2 = match.group(2)
group3 = match.group(3)
# process groups
return "<your replacement>"
s = "<your string>"
pattern = "([^\\[\s\\]]+)([\\]\s]*)( [>|=|<] )"
newtext= re.sub(pattern, replace, s)
print(newtext)