2012-07-07 73 views
0

Python和正則表達式我嘗試匹配重複/重疊花樣/塊等重疊圖案的正則表達式

04/00127-48 
U 05062012 
A: SAKARK 
T_ Par.: dsfsd 

04/00127-48 
U 05062012 
A: SAKARK 
T_ Par.: dsfsd 
04/00168-42 
U 05062012 
A: SAKARK 
T_ Par.: fdfs 
04/00168-43 
U 05062012 
A: SAKARK 
T_ Par.: fdfs 

我試圖

'(?=(\d+\/.*))' 

這似乎工作

'((\d+\/.*?)=?\d+\/) 

但有沒有更好的方法?

+1

我很困惑,你試圖提取哪些模式?你預期的結果是什麼? – 2012-07-07 18:14:10

+0

對不起的問題,我想匹配文本塊 – user642897 2012-07-07 18:23:32

+0

請參閱Marco de Wit的回答。注意他使用're.DOTALL'標誌。 – 2012-07-07 18:31:05

回答

2

這回答了你的問題:

re.findall(r'.+?(?=\d\d\/|$)',s,re.DOTALL) 

re.DOTALL需要讓.比賽結束線。

在正則表達式前面的r使它成爲一個原始字符串,因此帶反斜槓的轉義保留原樣,因此正則表達式函數將處理它們。這裏不需要,但仍然是正則表達式的好習慣。

你的問題不是很清楚。也許這比你想要的更好?

list(zip(*[iter(s.splitlines())]*4)) 

它給出了元組列表。