2011-02-14 48 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']