我要在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] 删除。
我来说两句