给一个像这样的字符串'/apps/platform/app/app_name/etc'
,我可以使用
p = re.compile('/apps/(?P<p1>.*)/app/(?P<p2>.*)/')
得到两个匹配的platform
and组app_name
,但是如何使用re.sub
函数(或更好的方法)将这两个组替换为其他字符串,例如windows
and facebook
?因此,最后一个字符串会想要/apps/windows/app/facebook/etc
。
通过正则表达式无法进行单独的组替换。所以我建议你这样做。
(?<=/apps/)(?P<p1>.*)(/app/)(?P<p2>.*)/
然后将匹配的字符替换为windows\2facebook/
。而且我建议您将正则表达式定义为原始字符串。使用向后看是为了避免额外的捕获组。
>>> 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'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句