使用python和正则表达式从文本中提取日期,日期格式为2010年10月12日
我想从以下文本中摘录日期: 一些文字更多文字2010年10月12日 结果将是: yyyy-mm-dd:2010-10-12使用python和正则表达式从文本中提取日期,日期格式为2010年10月12日,python,regex,Python,Regex,我想从以下文本中摘录日期: 一些文字更多文字2010年10月12日 结果将是: yyyy-mm-dd:2010-10-12 我如何告诉正则表达式月份是单词,可以是“一月”、“二月”等等,然后是一个空格,[一组1-2个字符]一个空格和最后一个[四位数字组]在正则表达式中写出月份的实际名称,这会产生一个非常可读和可维护的表达式,我觉得对于正则表达式来说很重要。像这样: (january|february|march|april|may|june|july|august|september|octob
我如何告诉正则表达式月份是单词,可以是“一月”、“二月”等等,然后是一个空格,[一组1-2个字符]一个空格和最后一个[四位数字组]在正则表达式中写出月份的实际名称,这会产生一个非常可读和可维护的表达式,我觉得对于正则表达式来说很重要。像这样:
(january|february|march|april|may|june|july|august|september|october|november|december)\s\d{1-2}\s\d{4}
使用上面的正则表达式和日历库查找日历名称,您可以按如下操作
import calendar
import re
month_num = {v: str(k) for k,v in enumerate(calendar.month_name)}
apattern = r'(january|february|march|april|may|june|july|august|september|october|november|december)\s\d{1,2}\s\-\s\d{4}'
re.sub(apattern, lambda x: 'yyyy-mm-dd:' + x.group().split(" ")[-1]+"-"+x.group().split(" ")[-3] + "-" + month_num[x.group().capitalize().split(" ")[0]], 'october 12 - 2010')