2013-05-08 414 views
0

比如我有一個字符串像這裏面的文字:我如何可以替換使用應用re.sub()括號

'(1) item 1. \n(2) item 2' 

我應該這樣結束了:

'(x) item 1. \n(x) item 2' 

怎麼可以只匹配括號內的文字,並替換它們?謝謝!

+0

你嘗試過這麼遠嗎?你用正則表達式標記了這個問題,但是你是否真的試圖爲它寫一個正則表達式呢?你有什麼問題? – 2013-05-08 22:11:43

+0

圓括號內可以出現什麼樣的字符串?你需要的正則表達式很大程度上取決於你期望的輸入類型。 – Max 2013-05-08 22:19:57

回答

0
In [3]: import re 
In [4]: re.sub("\([^)]*","(x",'(1) item 1. \n(2) item 2') 
Out[4]: '(x) item 1. \n(x) item 2' 
1

只是逃避括號:

In [1]: import re 

In [2]: s = '(1) item 1. \n(2) item 2' 

In [3]: re.sub(r'\(\d+\)', '(x)', s) 
Out[3]: '(x) item 1. \n(x) item 2' 

你需要逃避他們,因爲他們必須在正則表達式上下文中具有特殊意義(創建編號組)。

0
"\([^)]+\)" 

將匹配括號任何東西,所以你可以在紅寶石做

"(1) item 1. \n(2) item 2".gsub(/\([^)]+\)/, "(x)") 

編輯:固定的格式,因此轉義不會丟失......