Python正则表达式匹配日期

团块:

我要在Python中使用什么正则表达式来匹配这样的日期:“ 11/12/98”?

忘记:

与其使用正则表达式,不如将字符串解析为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.year
Out[143]: 1998

In [144]: date.month
Out[144]: 11

In [145]: date.day
Out[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 re
In [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上图所示的方法对其进行解析

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章