4
給定一個正則表達式和一個字符串s,我想生成一個新的字符串,其中由正則表達式匹配的s的任何子字符串都被括號包圍。在Python中的正則表達式匹配的字符串周圍添加括號
例如:我的原始字符串s是「Alan Turing 1912-1954」,而我的正則表達式正好匹配「1912-1954」。新生成的字符串應該是「Alan Turing(1912-1954)」。
給定一個正則表達式和一個字符串s,我想生成一個新的字符串,其中由正則表達式匹配的s的任何子字符串都被括號包圍。在Python中的正則表達式匹配的字符串周圍添加括號
例如:我的原始字符串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)'