我想捕獲正則表達式的日期,如:註冊前的多個字符
14-July-2012-11_31_59
我做的:
\d{2}-\w{4}-\d{4}-\d{2}_\d{2}_\d{2}$
但這裏的月份部分是4個字母,也可能是長期例如九月。 這是唯一的變量。數字的長度是可以的。
如何正則表達這個詞的部分說至少3個字母?
我想捕獲正則表達式的日期,如:註冊前的多個字符
14-July-2012-11_31_59
我做的:
\d{2}-\w{4}-\d{4}-\d{2}_\d{2}_\d{2}$
但這裏的月份部分是4個字母,也可能是長期例如九月。 這是唯一的變量。數字的長度是可以的。
如何正則表達這個詞的部分說至少3個字母?
試試這個:
\d{2}-\w{3,}-\d{4}-\d{2}_\d{2}_\d{2}$
一般來說,X{n,}
意味着「X
至少n
次」。但\w
也匹配數字和下劃線,因此您可能想使用[a-zA-Z]{3,}
,因爲月份名稱不應包含數字或下劃線。
\d{2}-[a-zA-Z]{3,}-\d{4}-\d{2}_\d{2}_\d{2}$
這是不是你要找的...
>>> 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'
>>>
你可以做'\ W {3}' - 請注意,'\ w'等同於'[A-ZA -Z0-9_]'(字母數字+下劃線)。 – NullUserException
是否有一個特定的原因,你想使用正則表達式呢? – sberry