正则表达式替换具有特定值的组

时间:2013-02-01 16:14:43

标签: python regex

我使用的是python 2.7

我只是尝试使用值更改正则表达式中的组:

import re

r = "/foo/bar/(?P<pk>[0-9]+)/"
rc = re.compile(r)
#that i try to do : rc["pk"] = 42 and get the resut
print rc.groupindex
#return {'pk' : 1}

我需要这样做,因为我不知道正则表达式,但我知道其中有一个组。

编辑:

我希望得到这样的结果:

rc["pk"] = 42
#now rc is /foo/bar/42 because (?P<pk>[0-9]+) is replace with 42

1 个答案:

答案 0 :(得分:0)

我不是python程序员,但我在许多其他系统中使用正则表达式。我相信你可以使用re.sub函数反向引用像这样的组:

搜索模式:

'(/foo/bar/)[0-9]+(/)'

替换模式:

'\g<1>42\g<2>'

这将取代

'/foo/bar/17/'

'/foo/bar/42/'

这甚至适用于文件夹名称本身就是表达式的地方:

'(/\w+/\w+/)\d+(/)'

Python还支持外观语句,如下所示:

'(?<=/foo/bar/)\d+(?=/)'

然后你只需用'42'替换匹配。 (Lookarounds不会“消费”字符,因此'((?<=...)''(?=...)'中的文字不会被替换。)