首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与替换数相冲突的Python正则表达式引用

与替换数相冲突的Python正则表达式引用
EN

Stack Overflow用户
提问于 2013-08-14 01:30:34
回答 3查看 323关注 0票数 1

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

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

这是我的解决方案:

代码语言:javascript
复制
re.sub(r'(\D+)(\d)$',r'\10\2','file1')

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-14 01:48:07

代码语言:javascript
复制
import re
print re.sub(r'(\D+)(\d)$',r'\g<1>0\2','file1')

别问..。只需执行\g<#>操作,它在python中就会运行得很好。其他语文也有同样的问题:

http://resbook.wordpress.com/2011/01/04/regex-with-back-references-followed-by-number/

票数 2
EN

Stack Overflow用户

发布于 2013-08-14 01:41:21

不知道python,但在您的正则表达式中,您只想要一个数字而不是两个数字。

为了比赛,你可以这样做

代码语言:javascript
复制
.+[^\d]\d$

test1将与test1不匹配

祝好运

票数 0
EN

Stack Overflow用户

发布于 2014-01-22 03:11:05

@sdanzig有正确的答案,但如果您坚持要问,这实际上是一个有记录的特性:

http://docs.python.org/2/library/re.html

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

在字符串类型的repl参数中,除了上面描述的字符转义和反向引用之外,\g还将使用由名称组匹配的子字符串,如(?p.)语法。G使用相应的组号;因此,\g<2>相当于\2,但在替换(如\g<2>0 )中并不是模棱两可。20将被解释为对第20组的提及,而不是对第2组的提及,后面跟着文字'0‘。反向引用\g<0>在RE匹配的整个子字符串中替换。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18221834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档