繁体   English   中英

正则表达式用特定值替换组

[英]regex replace group with specific value

我使用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

我不是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' (解决方法不会“使用”字符,因此不会替换'((?<=...)''(?=...)'的文本。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM