2013-06-25 497 views
0

我有一個字符串,我想在Python中使用正則表達式替換刪除大括號的內容,除了位於#字符之後和.字符(3 ,在下面的例子中),以及圓括號內的任何文字完全由字母組成。 (在下面的例子中的「信息」)Re.sub正則表達式刪除嵌套括號python

我已經把這一起解決第一個問題,但它不工作(我是一個絕對的正則表達式的初學者)。

string = 'Name, Other "Else" (2000) (info) {empty (#3.99)}' 

r= re.sub(r'(^?={))?\{.+\(#(\d+)\.\d+\)\}','',string) 
print r 

理想的輸出應該是:

Name, Other "Else" (2000) (3) 

任何幫助表示讚賞

+0

是否有某些原因導致'(i​​nfo)'不包含在輸出中? –

+0

「信息」在圓括號內,但由於它不是數字,所以應該刪除 – user2447387

+0

可能值得一提的是,在你的問題中。 –

回答

2

試試這個:

re.sub(r'\(\d*\D+\d*\)\s+','',re.sub(r'\{.+?\#(\d+)\.\d+\)}',r'(\1)',s)) 

這樣做是符合括號內的數字,然後使用捕獲(括號內的部分)來獲得所需的字符串。

旁註:最好不要將字符串用作變量名稱,因爲這可能與「字符串」模塊衝突。

+0

謝謝,它適用於花括號部分:)...如果不是完全由數字組成的圓括號的內容,我該如何刪除它(帶有單獨的正則表達式的解決方案很好)? – user2447387

+1

嘗試新版本。就像斯萊特說的那樣,把這個添加到你的問題上。 – simonzack

+0

謝謝,抱歉的問題 – user2447387