1 回答

TA貢獻(xiàn)1854條經(jīng)驗 獲得超8個贊
您可以使用捕獲組()來匹配**兩側(cè)包含的文本(您必須在正則表達(dá)式中使用 like 轉(zhuǎn)義它們\*,因為否則它們是正則表達(dá)式控制字符)。然后,您可以使用以下方法在替換文本中引用捕獲的組\1:
import re
inp = "This is an **example** sentence. It is **awesome**."
out = re.sub(r'\*\*(.+?)\*\*', r'<b>\1</b>', inp)
# 'This is an <b>example</b> sentence. It is <b>awesome</b>.'
如果你想對剛剛隔離的組做更復(fù)雜的事情,那么你可以給 lambda 或函數(shù)作為第二個參數(shù)re.sub()。例如,要使捕獲的組大寫:
out = re.sub(r'\*\*([^*]+)\*\*',
lambda g: f'<b>{g.group(1).upper()}</b>',
inp)
# 'This is an <b>EXAMPLE</b> sentence. It is <b>AWESOME</b>.'
lambda 函數(shù)是用正則表達(dá)式結(jié)果對象調(diào)用的,因此g.group(1)等效于\1,即模式中的第一個捕獲組。當(dāng)然,作為一個字符串。我們只是調(diào)用.upper()它使其變成大寫。
添加回答
舉報