2012-05-07 2 views
0

дд в Pythonпитон дата регулярное выражение формиат

reg = "((1[0-2])|(0?[1-9]))/((1[0-9])|(2[0-9])|(3[0-1])|(0?[0-9]))" 
match = re.findall(reg, text, re.IGNORECASE) 
print match 

Для text = '4/13' Попытка написать RE распознать формат даты мм/она дает мне

[('4', '4', '', '13', '13', '', '', '')] 

но не

'4/13' 

Спасибо, Cheng

+0

Возможный дубликат [Преобразование строки в дату и время] (http://stackoverflow.com/questions/466345/converting-string-into-datetime) –

ответ

1

Остальные ответы более прямой, но вы можете также добавить дополнительную пару скобок вокруг вашего регулярное выражение:

reg = "(((0?[1-9])|(1[0-2]))/((1[0-9])|(2[0-9])|(3[0-1])|(0?[0-9])))"

Теперь findall даст вам:

[('4/13', '4', '4', '', '13', '13', '', '', '')]

Вы можете извлечь '4/13' fr om выше.

+0

классный, он работает. – cheng

+0

Кстати, как мне избавиться от 4s и 13s? – cheng

+0

В этом случае вы не можете использовать 'findall'. 'findall' находит все шаблоны в парах фигурных скобок. Таким образом, вы получаете внешний узор '' 4/13'', который вы ищете вместе с некоторыми внутренними шаблонами, такими как «4», «13» ... – mohit6up

3

не использую re.findall. использовать re.match:

reg = "((0?[1-9])|(1[0-2]))/((1[0-9])|(2[0-9])|(3[0-1])|(0?[0-9]))" 
match = re.match(reg, text, re.IGNORECASE) 
print match.group() 
Смежные вопросы