2012-06-01 5 views
1

Я пытаюсь написать RE найти все mm/dd Отформатируйтепитон регулярное выражение формата даты мм/дд

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

Он находит все mm/dd формат, но и дает такие вещи, как,

11/22 in 12311/22213 

и

10/22 in 1110/22213 

Как я могу исключить случаи, указанные выше?

Благодаря

ответ

1
(?<!\d)((1[0-2])|(0?[0-9]))/(((1[0-9])|(2[0-9])|(3[0-1])|(0?[0-9])))(?!\d) 

Конечно, это будет соответствовать вещи, как 02/31, но это начало. Я опубликовал here регулярное выражение, которое соответствует только действительным датам.

+0

Самый крайный кейс 02/29, действительный через несколько лет, а не в других. – nhahtdh

+2

Это невозможно поймать регулярным выражением :-) – dda

Смежные вопросы