2012-08-30 36 views
4

給定一個正則表達式和一個字符串s,我想生成一個新的字符串,其中由正則表達式匹配的s的任何子字符串都被括號包圍。在Python中的正則表達式匹配的字符串周圍添加括號

例如:我的原始字符串s是「Alan Turing 1912-1954」,而我的正則表達式正好匹配「1912-1954」。新生成的字符串應該是「Alan Turing(1912-1954)」。

回答

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)' 
相關問題