даты соответствия с использованием регулярных выражений python

Я хочу сопоставить даты, которые имеют следующий формат:

2010-08-27, 2010/08/27

Сейчас я не очень-то особо отношусь к дате, которая действительно возможна, но только в том, что она в правильном формате.

скажите регулярное выражение для этого.

благодаря

  • Как искать шаблон в текстовом файле, используя Python, объединяющий регулярные выражения и операции с строками / файлами и сохраняющие экземпляры шаблона?
  • Как использовать регулярные выражения для анализа тегов HTML?
  • Заменить все вхождения определенных слов
  • Регулярное выражение для соответствия разделенному запятыми списку ключа = значение, в котором значение может содержать запятые
  • Как анализировать пользовательские теги с помощью nltk.Regexp.parser ()
  • Чтение Python Regex в комментариях стиля c
  • Python - «IOError: ошибка ». Что вызывает эту ошибку в моем коде?
  • Что такое «необработанное строковое регулярное выражение» и как вы можете его использовать?
  • 4 Solutions collect form web for “даты соответствия с использованием регулярных выражений python”

    Вы можете использовать модуль datetime для синтаксического анализа дат:

     import datetime print datetime.datetime.strptime('2010-08-27', '%Y-%m-%d') print datetime.datetime.strptime('2010-15-27', '%Y-%m-%d') 

    вывод:

     2010-08-27 00:00:00 Traceback (most recent call last): File "./x.py", line 6, in <module> print datetime.datetime.strptime('2010-15-27', '%Y-%m-%d') File "/usr/lib/python2.7/_strptime.py", line 325, in _strptime (data_string, format)) ValueError: time data '2010-15-27' does not match format '%Y-%m-%d' 

    Таким образом, ValueError сообщит вам, соответствует ли дата:

     def valid_date(datestring): try: datetime.datetime.strptime(datestring, '%Y-%m-%d') return True except ValueError: return False 

    Чтобы разрешить различные форматы, вы можете либо проверить все возможности, либо использовать re для анализа полей:

     import datetime import re def valid_date(datestring): try: mat=re.match('(\d{2})[/.-](\d{2})[/.-](\d{4})$', datestring) if mat is not None: datetime.datetime(*(map(int, mat.groups()[-1::-1]))) return True except ValueError: pass return False 

    Вы можете использовать этот код:

     import re # regular expression to match dates in format: 2010-08-27 and 2010/08/27 # date_reg_exp = re.compile('(\d+[-/]\d+[-/]\d+)') 

    обновленное регулярное выражение ниже:

     # regular expression to match dates in format: 2010-08-27 and 2010/08/27 # and with mixed separators 2010/08-27 # date_reg_exp = re.compile('\d{4}[-/]\d{2}[-/]\d{2}') # if separators should not be mixed use backreference: date_reg_exp = re.compile('\d{4}(?P<sep>[-/])\d{2}(?P=sep)\d{2}') # a string to test the regular expression above test_str= """ fsf2010/08/27sdfsdfsd dsf sfds f2010/08/26 fsdf asdsds 2009-02-02 afdf """ # finds all the matches of the regular expression and # returns a list containing them matches_list=date_reg_exp.findall(test_str) # iterates the matching list and prints all the matches for match in matches_list: print match 

    Используйте модуль datetime . Вот регулярное выражение ради знания, хотя вы не должны его использовать:

     r'\d{4}[-/]\d{2}[-/]\d{2}' 

    В пакете dateutil есть весьма понятный синтаксический парсер. Он анализирует широкий диапазон форматов даты. http://pypi.python.org/pypi/python-dateutil

    Python - лучший язык программирования в мире.