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

我怎么能代替foobar用foo123bar?


这不起作用:


>>> re.sub(r'(foo)', r'\1123', 'foobar')

'J3bar'

这有效:


>>> re.sub(r'(foo)', r'\1hi', 'foobar')

'foohibar'

我认为这是一个常见的问题\number。任何人都可以给我一个如何处理这个问题的提示吗?


侃侃无极
浏览 846回答 2
2回答

精慕HU

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

有只小跳蛙

你的问题是r'\ 112'被解释为八进制文字0112,ASCII'J'或十进制74.无法看到如何强制反向引用'\ 1'在字符串连接之前得到评估或''.join()
打开App,查看更多内容
随时随地看视频慕课网APP