为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

侃侃无极 2019-09-02 08:37:38
我怎么能代替foobar用foo123bar?这不起作用:>>> re.sub(r'(foo)', r'\1123', 'foobar')'J3bar'这有效:>>> re.sub(r'(foo)', r'\1hi', 'foobar')'foohibar'我认为这是一个常见的问题\number。任何人都可以给我一个如何处理这个问题的提示吗?
查看完整描述

2 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞


答案是:


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匹配的整个子字符串。


查看完整回答
反对 回复 2019-09-02
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

你的问题是r'\ 112'被解释为八进制文字0112,ASCII'J'或十进制74.无法看到如何强制反向引用'\ 1'在字符串连接之前得到评估或''.join()

查看完整回答
反对 回复 2019-09-02
  • 2 回答
  • 0 关注
  • 786 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信