多个字符的正则表达式

时间:2013-07-09 15:53:58

标签: python regex

我正在尝试捕获正则表达式,例如:

14-July-2012-11_31_59

我做:

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

但这里的月份部分是4个字母,可能很长,例如九月。 这是唯一的变量。数字的长度是可以的。

正则表达式部分如何说至少3个字母?

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'
>>>