python如何用正则表达式组替换字符串?

时间:2014-12-25 09:26:59

标签: python regex

提供类似'/apps/platform/app/app_name/etc'的字符串,我可以使用

p = re.compile('/apps/(?P<p1>.*)/app/(?P<p2>.*)/')

获取两个匹配的platformapp_name组,但我如何使用re.sub函数(或更好的方法)将这两个组替换为其他字符串{{1 }和windows?所以最后一个字符串就像facebook

1 个答案:

答案 0 :(得分:3)

通过正则表达式无法进行单独的组替换。所以我建议你这样做。

(?<=/apps/)(?P<p1>.*)(/app/)(?P<p2>.*)/

DEMO

然后用windows\2facebook/替换匹配的字符。而且我建议你将你的正则表达式定义为原始字符串。 Lookbehind用于避免额外捕获组。

>>> s = '/apps/platform/app/app_name/etc'
>>> re.sub(r'(?<=/apps/)(?P<p1>.*)(/app/)(?P<p2>.*)/', r'windows\2facebook/', s)
'/apps/windows/app/facebook/etc'