与其使用正则表达式,不如将字符串解析为
datetime.datetime对象通常更好:
In [140]: datetime.datetime.strptime("11/12/98","%m/%d/%y")Out[140]: datetime.datetime(1998, 11, 12, 0, 0)In [141]: datetime.datetime.strptime("11/12/98","%d/%m/%y")Out[141]: datetime.datetime(1998, 12, 11, 0, 0)然后,您可以访问日,月和年(以及小时,分钟和秒)作为
datetime.datetime对象的属性:
In [143]: date.yearOut[143]: 1998In [144]: date.monthOut[144]: 11In [145]: date.dayOut[145]: 12
要测试用正斜杠分隔的数字序列是否表示有效日期,可以使用一个
try..except块。无效的日期将引发
ValueError:
In [159]: try: .....: datetime.datetime.strptime("99/99/99","%m/%d/%y") .....: except ValueError as err: .....: print(err) .....: .....: time data '99/99/99' does not match format '%m/%d/%y'如果您需要搜索更长的字符串以获取日期,则可以使用正则表达式来搜索以正斜杠分隔的数字:
In [146]: import reIn [152]: match = re.search(r'(d+/d+/d+)','The date is 11/12/98')In [153]: match.group(1)Out[153]: '11/12/98'
当然,无效日期也将匹配:
In [154]: match = re.search(r'(d+/d+/d+)','The date is 99/99/99')In [155]: match.group(1)Out[155]: '99/99/99'
要检查
match.group(1)返回的日期字符串是否有效,您可以使用
datetime.datetime.strptime上图所示的方法对其进行解析。



