2011-02-14 68 views
20

我想使用正則表達式拆分字符串。在正則表達式Python拆分字符串

Friday 1Friday 11 JAN 11 

我想達到的輸出是

['Friday 1', 'Friday 11', ' JAN 11'] 

我的片段至今沒有產生預期的效果:

>>> import re 
>>> p = re.compile(r'(Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday)\s*\d{1,2}') 
>>> filter(None, p.split('Friday 1Friday 11 JAN 11')) 
['Friday', 'Friday', ' JAN 11'] 

我在做什麼毛病我的正則表達式?

回答

23

問題是捕獲括號。此語法:(?:...)使它們不被捕獲。試試:

p = re.compile(r'((?:Friday|Saturday)\s*\d{1,2})') 
+0

這正是我所追求的!我知道這是一件小事。謝謝 – 2011-02-14 18:50:33

0
p = re.compile(r'(Friday\s\d+|Saturday)') 
5

您也可以使用're.findall'功能。

\>>> val 
'Friday 1Friday 11 JAN 11 ' 
\>>> pat = re.compile(r'(\w+\s*\d*)') 
\>>> m=re.findall(pat,val) 
\>>> m 
['Friday 1', 'Friday 11', 'JAN 11'] 
相關問題