4

给定一个正则表达式和一个字符串 s,我想生成一个新字符串,其中与正则表达式匹配的 s 的任何子字符串都用括号括起来。

例如:我的原始字符串 s 是“Alan Turing 1912-1954”,而我的正则表达式恰好匹配“1912-1954”。新生成的字符串应该是“Alan Turing (1912-1954)”。

4

1 回答 1

9

解决方案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)'
于 2012-08-30T21:31:13.507 回答