Python - 修改反向引用。能做到吗?

Mat*_*ttL 6 python regex backreference

Python新手,请原谅我的无知。我正在尝试修改正则表达式中的反向引用字符串。

例子:

>>>a_string
'fsa fad fdsa dsafasdf u.s.a. U.S.A. u.s.a fdas adfs.f fdsa f.afda'
>>> re.sub(r'(?<=\s)(([a-zA-Z]\.)+[a-zA-Z]\.{0,1})(?=\s)', '<acronym>'+re.sub(r'\.',r'',(r'\1').upper())+'</acronym>', a_string)
'fsa fad fdsa dsafasdf <acronym>u.s.a.</acronym> <acronym>U.S.A.</acronym> <acronym>u.s.a</acronym> fdas adfs.f fdsa f.afda'
Run Code Online (Sandbox Code Playgroud)

而不是我想要的输出:

'fsa fad fdsa dsafasdf <acronym>USA</acronym> <acronym>USA</acronym> <acronym>USA</acronym> fdas adfs.f fdsa f.afda'
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助。

Ign*_*ams 3

来自文档

如果repl是一个函数,则它会在每个非重叠出现的pattern时被调用。该函数采用单个匹配对象参数,并返回替换字符串。例如:

并查看链接文档中包含的示例。