如何将'foobar'替换为'foo123bar'?
这不起作用:
>>> re.sub(r'(foo)', r'\1123', 'foobar')
'J3bar'
这有效:
>>> re.sub(r'(foo)', r'\1hi', 'foobar')
'foohibar'
我认为这是一个常见问题:数字后面的数字。任何人都可以告诉我如何处理这个问题?
发布于 2018-09-25 16:46:08
答案是:
re.sub(r'(foo)', r'\g<1>123', 'foobar')
文档的相关摘录:
除了如上所述的字符转义和反向引用外,\ g还将使用由名为name的组匹配的子字符串,由(?P ...)语法定义。\ g使用相应的组号; 因此,\ g <2>等于\ 2,但在诸如\ g <2>的替换中不是模糊的。\ 20将被解释为对组20的引用,而不是对组2的引用,后跟文字字符“0”。反向引用\ g <0>替换RE匹配的整个子字符串。
https://stackoverflow.com/questions/-100002732
复制相似问题