zhi*_*ang 154 python regex numbers regex-group
我怎么能代替foobar用foo123bar?
这不起作用:
>>> re.sub(r'(foo)', r'\1123', 'foobar')
'J3bar'
Run Code Online (Sandbox Code Playgroud)
这有效:
>>> re.sub(r'(foo)', r'\1hi', 'foobar')
'foohibar'
Run Code Online (Sandbox Code Playgroud)
我认为这是一个常见的问题\number.任何人都可以给我一个如何处理这个问题的提示吗?
Joh*_*Jr. 272
答案是:
re.sub(r'(foo)', r'\g<1>123', 'foobar')
Run Code Online (Sandbox Code Playgroud)
文档的相关摘录:
除了如上所述的字符转义和反向引用之外,\ g还将使用由名为name的组匹配的子字符串,由(?P ...)语法定义.\ g使用相应的组号; 因此,\ g 2等于\ 2,但在诸如\ g 2的替换中不是模糊的.\ 20将被解释为对组20的引用,而不是对组2的引用,后跟文字字符"0".反向引用\ g <0>替换RE匹配的整个子字符串.