2017-08-09 22 views
-1

我試圖使用Python運行正則表達式做更換象下面這樣:如何在Python中編寫正則表達式以保持組內容不變?

a = "%I'm a sentence.|" 
re.sub(r"%(.*?)\|", "<\1>", a) 

然後b = <\1>,但我想我應該如何實現這個的<I'm a sentences.>

結果呢?我試圖組I'm a sentence,但我覺得我做錯了什麼,所以結果並不維護組1。 如果您有任何想法,請讓我知道。非常感謝您提前!

+1

一如既往與正則表達式,使用原始字符串字面:'R 「<\1>」' –

+0

謝謝@Rawing – Penny

回答

5

使用原始字符串進行替換,否則\1將被解釋爲八進制字符代碼,而不是後向引用。並將結果賦給b

b = re.sub(r"%(.*?)\|", r"<\1>", a) 

DEMO

+0

謝謝,@barmar!這非常有幫助! – Penny

3

捕捉組使用\g<1>

a = "%I'm a sentence.|" 
a = re.sub(r"%(.*?)\|", "<\g<1>>", a) 
# <I'm a sentence.> 
相關問題