Простые группы регулярных выражений Python не могут разобрать дату
Я пытаюсь разобрать даты с помощью регулярных выражений, используя группы, но python возвращает пустые списки. Я не делаю ничего фантастического, просто что-то вроде 25.12.10. Я хочу отклонить 12/25-10, хотя.
date = re.compile("\d{1,2}([/.-])\d{1,2}\1\d{2}")
Я пробовал онлайн-библиотеки регулярных выражений, но их решения, похоже, тоже не работают. Есть идеи?
Пример ввода: "Здравствуйте, сегодня 18.10.10, время 10:50". Обнадеживающий вывод: "18.10.10"
Я использую Python 2.5.
3 ответа
Используйте необработанную строку:
date = re.compile(r"\d{1,2}([/.-])\d{1,2}\1\d{2}")
В противном случае \1
в строке литерал интерпретируется как символ 1 (начало заголовка).
РЕДАКТИРОВАТЬ: Чтобы добавить группы для компонентов даты, используйте:
re.compile(r"(\d{1,2})([/.-])(\d{1,2})\2(\d{2})")
Без сомнения, перебор, но библиотека "parsedatetime" работает для меня: http://code.google.com/p/parsedatetime/
Он использует регулярные выражения внутри, но делает гораздо больше, чем анализ форматов MM/DD/YY.