我正在尝试为以下日期捕获正则表达式:
14-July-2012-11_31_59
我愿意:
\d{2}-\w{4}-\d{4}-\d{2}_\d{2}_\d{2}$
但是这里的月份部分是 4 个字母,它可能很长,例如九月。那是唯一的变量。数字长度没问题。
如何正则表达式单词部分至少说出 3 个字母?
一般来说,X{n,}
意思是“X
至少n
几次”。但\w
也匹配数字和下划线,您可能希望使用它[a-zA-Z]{3,}
,因为月份名称不应包含数字或下划线。
\d{2}-[a-zA-Z]{3,}-\d{4}-\d{2}_\d{2}_\d{2}$
尝试这个:
\d{2}-\w{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'
>>>