2013-07-09 3 views
0

я пытаюсь захвата регулярное выражение для дат, как:Reg экс нескольких персонажей

14-July-2012-11_31_59 

я:

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

Но месяц часть здесь 4 буквы, то это может быть долго, например, Сентябрь. Это единственная переменная. Длина цифр в порядке.

Как сделать регулярное выражение слова частью, чтобы сказать по крайней мере 3 буквы?

+0

Вы можете сделать '\ ш {3}' - обратите внимание, что '\ w' эквивалентно' [A-Za -Z0-9_] '(alphanumerics + подчеркивание). – NullUserException

+0

Есть ли причина, по которой вы хотите использовать регулярное выражение для этого? – sberry

ответ

1

Попробуйте это:

\d{2}-\w{3,}-\d{4}-\d{2}_\d{2}_\d{2}$ 
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

Это то, что вы ищете ...

>>> 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' 
>>> 
Смежные вопросы