python re.sub组:后面的数字\number

python re.sub组:后面的数字\number,python,regex,numbers,regex-group,Python,Regex,Numbers,Regex Group,如何用foo123bar替换foobar 这不起作用: >>> re.sub(r'(foo)', r'\1123', 'foobar') 'J3bar' 这项工作: >>> re.sub(r'(foo)', r'\1hi', 'foobar') 'foohibar' 我认为这是像\number这样的东西的常见问题。有人能给我一个如何处理的提示吗?答案是: re.sub(r'(foo)', r'\g<1>123', 'foobar') re.s

如何用
foo123bar
替换
foobar

这不起作用:

>>> re.sub(r'(foo)', r'\1123', 'foobar')
'J3bar'
这项工作:

>>> re.sub(r'(foo)', r'\1hi', 'foobar')
'foohibar'
我认为这是像
\number
这样的东西的常见问题。有人能给我一个如何处理的提示吗?

答案是:

re.sub(r'(foo)', r'\g<1>123', 'foobar')
re.sub(r'(foo'),r'\g123',foobar')
文件的相关摘录:

除了字符转义和 如上所述的反向参考, \g将使用子字符串 由名为name的组匹配,如 由(?P…)语法定义。 \g使用相应的 组号\因此,g是 相当于\2,但不含糊 在替换中,例如\g0\20 将被解释为对 第20组,而非第2组 后跟文字字符“0”。 反向引用\g替换为 由 RE


这个问题被添加到“组”下。这个问题花了我很长时间才找到,因为它没有“捕获组”或“编号组引用”这两个术语,但我最终来到了这里,很高兴您提出了这个问题。您的问题是,r'\112'被解释为八进制文字0112、ASCII'J'或十进制74。看不到如何在字符串连接或
''之前强制对反向引用“\1”进行求值。join()
与问题有一点偏差,是否有任何方法引用所有组匹配项,即r'\hi'?请不要对自己太苛刻。它的深度如此之深,以至于大多数人阅读这些文档所花费的时间远远超过谷歌搜索他们的问题并找到答案所花费的时间。如果您正在查找上下文,则可以找到提供的准确报价。我是否可以获取该组并对其进行修改\G例如,在这个例子中,g是foo,但是我想用u来改变o,就像这个“fuu”