2015-09-28 156 views
7

我想查找這些括號中包含在[[ ]]中的所有數據。Python正則表達式部分提取

[AAAAA] - > AAAAA

我的Python代碼(重新使用庫)是

la = re.findall(r'\[\[(.*?)\]\]', fa.read()) 

如果我只想 '是一種' 自[[a|b]]

提取

這個任務的任何簡潔的正則表達式? (提取數據前|

或者我應該使用額外的if語句嗎?

回答

3

你可以試試:

r'\[\[([^\]|]*)(?=.*\]\])' 

([^\]|]*)將匹配直到|]被發現。並且(?=.*\]\])是一個向前看,以確保]]匹配RHS的匹配。

測試:

>>> re.search(r'\[\[([^\]|]*)(?=.*\]\])', '[[aaa|bbb]]').group(1) 
'aaa' 
>>> re.search(r'\[\[([^\]|]*)(?=.*\]\])', '[[aaabbb]]').group(1) 
'aaabbb' 
+1

感謝你們提供了簡潔的回答和解釋。 我應該閱讀更多關於正則表達式的文章。 – SUNDONG

+0

只有一件事要注意 - 這不會處理嵌套括號(事實上,沒有計數器的幫助,正則表達式一般不會)。 – brandonscript