【发布时间】:2011-08-24 11:40:36
【问题描述】:
如何将foobar 替换为foo123bar?
这不起作用:
>>> re.sub(r'(foo)', r'\1123', 'foobar')
'J3bar'
这行得通:
>>> re.sub(r'(foo)', r'\1hi', 'foobar')
'foohibar'
我认为在拥有\number 之类的内容时这是一个常见问题。谁能给我一个关于如何处理这个问题的提示?
【问题讨论】:
-
此问题已添加到Stack Overflow Regular Expression FAQ 的“群组”下。
-
这个问题花了我很长时间才找到,因为它没有“捕获组”或“编号组参考”这样的术语,但我终于来了,很高兴你问到它。
-
您的问题是 r'\112' 被解释为八进制文字 0112、ASCII'J' 或十进制 74。看不到如何强制反向引用 '\1' 获取在字符串连接之前评估或
''.join() -
与问题的小偏差,以任何方式引用所有组匹配,即 r'\
hi'?
标签: python regex numbers regex-group