这是我的字符串
string = '03/25/93 Total time of visit (in minutes)'
我要匹配'03 / 25/93'并将其替换为'03 / 25/1993'。目前我正在尝试
re.sub(r'(\d?\d/\d?\d/)(\d\d)', r'\119\2', string)
但是很显然,'\ 1'和'\ 2'之间的'19'会引起一些错误。有没有办法修改此方法?
答案 0 :(得分:1)
在这种情况下,您需要使用语法\g<group>
import re
string = '03/25/93 Total time of visit (in minutes)'
res = re.sub(r'(\d?\d/\d?\d/)(\d\d)', r'\g<1>19\2', string)
print(res)
'03/25/1993 Total time of visit (in minutes)'
来自文档
在字符串类型的repl参数中,除了上述的字符转义和向后引用之外,\ g还将使用与(name)组匹配的子字符串,该组由(?P ...)语法定义。 \ g使用相应的组号;因此,\ g <2>等效于\ 2,但在诸如\ g <2> 0之类的替换中并没有歧义。 \ 20将被解释为对组20的引用,而不是对组2的引用,后跟文字字符“ 0”。向后引用\ g <0>替换与RE匹配的整个子字符串
看看re.sub
的{{3}},以便更好地理解