给定一个正则表达式和一个字符串 s,我想生成一个新字符串,其中与正则表达式匹配的 s 的任何子字符串都用括号括起来。
例如:我的原始字符串 s 是“Alan Turing 1912-1954”,而我的正则表达式恰好匹配“1912-1954”。新生成的字符串应该是“Alan Turing (1912-1954)”。
解决方案1:
>>> re.sub(r"\d{4}-\d{4}", r"(\g<0>)", "Alan Turing 1912-1954")
'Alan Turing (1912-1954)'
\g<0>
是对整个匹配项的反向引用(\0
不起作用;它将被解释为\x00
)。
解决方案2:
>>> regex = re.compile(r"\d{4}-\d{4}")
>>> regex.sub(lambda m: '({0})'.format(m.group(0)), "Alan Turing 1912-1954")
'Alan Turing (1912-1954)'