python - 不太清楚re.sub

时间:2016-03-30 01:13:24

标签: python regex

我想替换任何表达式,包括单个数字加上一个数字,一个空格和一个字符。

示例:'3f'应该变为'3 f'

我正在做以下事情,以确保我知道我打算替换的正则表达式是什么。

import re

found = re.match(r'^[0-9][a-z]$', '3f')

if found:
    print 'ok'

结果是:

>> ok

但是,当我这样做时

found = re.sub(r'^[0-9][a-z]$',r'^[0-9] [a-z]$', '3f')

我明白了:

>>>> '^[0-9] [a-z]$'

而不是'3 f'

我做错了什么?

2 个答案:

答案 0 :(得分:3)

found = re.sub(r'^([0-9])([a-z])$',r'\1 \2', '3f')
#                  ^^^^^  ^^^^^
#                    1      2

您需要为第一场比赛指定r"\1",第二场比赛指定r"\2"

您在正则表达式

中指定与捕获组()的匹配项

答案 1 :(得分:2)

不是专门依赖字符串匹配,而是另一种可能性是直接用函数操作匹配的组:

localhost