2013-07-09 23 views
0

我想捕獲正則表達式的日期,如:註冊前的多個字符

14-July-2012-11_31_59 

我做的:

\d{2}-\w{4}-\d{4}-\d{2}_\d{2}_\d{2}$ 

但這裏的月份部分是4個字母,也可能是長期例如九月。 這是唯一的變量。數字的長度是可以的。

如何正則表達這個詞的部分說至少3個字母?

+0

你可以做'\ W {3}' - 請注意,'\ w'等同於'[A-ZA -Z0-9_]'(字母數字+下劃線)。 – NullUserException

+0

是否有一個特定的原因,你想使用正則表達式呢? – sberry

回答

1

試試這個:

\d{2}-\w{3,}-\d{4}-\d{2}_\d{2}_\d{2}$ 
2

一般來說,X{n,}意味着X至少n次」。但\w也匹配數字和下劃線,因此您可能想使用[a-zA-Z]{3,},因爲月份名稱不應包含數字或下劃線。

 
\d{2}-[a-zA-Z]{3,}-\d{4}-\d{2}_\d{2}_\d{2}$ 
1

這是不是你要找的...

>>> a = '14-July-2012-11_31_59' 
>>> 
>>> pat = r'\b\d{2}\-\w{3,}\-\d{2,4}\-\d{2}\_\d{2}\_\d{2}\b' 
>>> regexp = re.compile(pat) 
>>> m = regexp.match(a) 
>>> m 
<_sre.SRE_Match object at 0xa54c870> 
>>> m.group() 
'14-July-2012-11_31_59' 
>>> m = regexp.match('14-September-2012-11_31_59') 
>>> m.group() 
'14-September-2012-11_31_59' 
>>> m = regexp.match('14-September-12-11_31_59') 
>>> m.group() 
'14-September-12-11_31_59' 
>>> m = regexp.match('14-Sep-12-11_31_59') 
>>> m.group() 
'14-Sep-12-11_31_59' 
>>> m = regexp.match('14-Se-12-11_31_59') 
>>> m.group() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'NoneType' object has no attribute 'group' 
>>>