Python正则表达式引用与替换号冲突

Python正则表达式引用与替换号冲突,python,regex,substitution,Python,Regex,Substitution,我正在学习Python入门课程,在尝试使用正则表达式替换时遇到了问题 问题是:编写一个替换命令,将file1、file2等名称更改为file01、file02等,但不会将file10或file20等名称添加为零 以下是我的解决方案: re.sub(r'(\D+)(\d)$',r'\10\2','file1') 如您所见,0正在干扰我的\1引用。有人能帮我找到一个简单的解决办法吗?谢谢 我不懂python,但在正则表达式中,您只需要一个数字,而不是两个 对于比赛,你可以这样做 .+[^\d]\d

我正在学习Python入门课程,在尝试使用正则表达式替换时遇到了问题

问题是:编写一个替换命令,将file1、file2等名称更改为file01、file02等,但不会将file10或file20等名称添加为零

以下是我的解决方案:

re.sub(r'(\D+)(\d)$',r'\10\2','file1')

如您所见,0正在干扰我的\1引用。有人能帮我找到一个简单的解决办法吗?谢谢

我不懂python,但在正则表达式中,您只需要一个数字,而不是两个

对于比赛,你可以这样做

.+[^\d]\d$
测试1将匹配 test1将不匹配

祝你好运

重新导入
import re
print re.sub(r'(\D+)(\d)$',r'\g<1>0\2','file1')
打印re.sub(r'(\D+)(\D)$'、r'\g0\2'、'file1')
别问。。只需执行\g操作,它就可以在python中正常工作。其他语言也有同样的问题:


@sdanzig有正确的答案,但如果你坚持要问,它实际上是一个文档化的功能:

阅读
re.sub()
的最后一段

在字符串类型repl参数中,除了字符转义 和上面描述的反向引用,\g将使用子字符串 由(?P…)定义的名为name的组匹配 语法\g使用相应的组号\g是 因此相当于\2,但在这样的替换中并不含糊 作为\g0\20将被解释为提及第20组,而不是 对组2的引用,后跟文字字符“0”。这个 backreference\g替换由 RE