提供类似'/apps/platform/app/app_name/etc'
的字符串,我可以使用
p = re.compile('/apps/(?P<p1>.*)/app/(?P<p2>.*)/')
获取两个匹配的platform
和app_name
组,但我如何使用re.sub
函数(或更好的方法)将这两个组替换为其他字符串{{1 }和windows
?所以最后一个字符串就像facebook
。
答案 0 :(得分:3)
通过正则表达式无法进行单独的组替换。所以我建议你这样做。
(?<=/apps/)(?P<p1>.*)(/app/)(?P<p2>.*)/
然后用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'