我正在尝试捕获正则表达式,例如:
14-July-2012-11_31_59
我做:
\d{2}-\w{4}-\d{4}-\d{2}_\d{2}_\d{2}$
但这里的月份部分是4个字母,可能很长,例如九月。 这是唯一的变量。数字的长度是可以的。
正则表达式部分如何说至少3个字母?
答案 0 :(得分: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 :(得分:1)
试试这个:
\d{2}-\w{3,}-\d{4}-\d{2}_\d{2}_\d{2}$
答案 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'
>>>