2 回答

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個(gè)贊
這與其說(shuō)是替換,不如說(shuō)是將匹配的子字符串括在括號(hào)中。
>>> re.sub('(ab.cde)', r'(\1)', '123abxcde456')
'123(abxcde)456'
模式就是正則表達(dá)式ab.cde。模式中的括號(hào)表示整個(gè)匹配是一個(gè)捕獲組。替換文本是一對(duì)括號(hào),其中包含(第一個(gè))組匹配的內(nèi)容。
您還可以指定一個(gè)接收正則表達(dá)式匹配結(jié)果的函數(shù),而不是替換文本。如果沒(méi)有別的辦法,這可以讓您避免在正則表達(dá)式中顯式定義捕獲組。
def surround(m):
return f'({m.group()})'
new_str = re.sub('ab.cde', surround, '123abxcde456')
assert new_str == '123(abxcde)456'

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以使用正則表達(dá)式來(lái)識(shí)別已知部分并用某些通配符替換未知部分。在你的例子中,
from re import sub
replaced = sub('(ab.cde)', r'(\1)', 'asdasdab5cdeasdasd')
添加回答
舉報(bào)