我有以下内容:
>>> re.sub('(..)+?/story','\\g<1>','money/story')
'mey'
>>>
为什么捕获组1是
money
的前一个字母和后两个字母,而不是前两个字母? 最佳答案
第一个捕获组根本不包含m
。 (..)+?/story
匹配的是oney/story
。(..)+?
匹配偶数个字符,因此匹配以下字符(隔开以使其更清楚):
m o n e y / s t o r y
^-^ ^-^
然后替换是第一个捕获组。您可能不知道的是,当您有一个重复的捕获组(在本例中为
(..)+?
)时,仅保留最后一个捕获组。总而言之,
oney/story
是匹配的,并用ey
代替,因此结果是mey
。关于python - 解释这个行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27615277/