2013-10-29 246 views
-1

我想從字符串中提取兩個字符。從字符串['data_EL27.dat', 'data.BV256.dat', 'data_BV257.dat'],我希望輸出['EL', 'BV', 'BV']用正則表達式提取字符串的一部分

下面是我使用正則表達式,這似乎對這樣一個簡單的任務過於笨重,我覺得我錯過了一些更好的方式做到這一點。

import re 

str = 'data_EL27.dat' 
m = re.search(r'(?:data[._])(\w{2})', str) 
m.group(1) # 'EL' 

我意識到,在這種情況下,我正好可以str[5:7]但我不希望靠保持相同前綴的長度。

+0

雖然我沒有'使用Python的正則表達式,所以我不知道它的怪癖/快捷方式,這很漂亮的外觀。我假設你可以刪除第一次捕獲,並使用更多像'^ \ w + [._](\ w {2})'作爲正則表達式來減少羅嗦 –

+0

感謝@rbev。我想我也可以擺脫'^ \ w +',只需使用're.search(r'[._](\ w {2})',str).group(1)' –

回答

0

它不應該只是

m=re.search("data.(..)",str) 

相關問題