我使用的是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
答案 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不会“消费”字符,因此'((?<=...)'
和'(?=...)'
中的文字不会被替换。)