0

我正在尝试为以下日期捕获正则表达式:

14-July-2012-11_31_59

我愿意:

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

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

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

4

3 回答 3

2

一般来说,X{n,}意思是X至少n几次”。但\w也匹配数字和下划线,您可能希望使用它[a-zA-Z]{3,},因为月份名称不应包含数字或下划线。

\d{2}-[a-zA-Z]{3,}-\d{4}-\d{2}_\d{2}_\d{2}$
于 2013-07-09T16:00:31.647 回答
1

尝试这个:

\d{2}-\w{3,}-\d{4}-\d{2}_\d{2}_\d{2}$
于 2013-07-09T15:59:18.007 回答
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'
>>>
于 2013-07-09T16:08:37.167 回答