如何使用正则表达式解析字符串日期?

How can I parse string date with regex?

我有 3 个可能的字符串日期。

我必须用正则表达式解析日期字符串

date = "13.06.2020"
date2 = "13-06-2020"
date3 = "13/06/2020"
for i in [date,date2,date3]:
    finder = re.findall(r'something',i) #I try findall but I think it doesn't work.
    print("day : " + finder[0])
    print("month : " + finder[1])
    print("year : " + finder[2])

它应该给出所有可能性的输出。我想出了 Datetime 但我不能使用它。我使用了 re

day:13
month:06
year:2020

大家有什么建议吗?

试试这个

for i in [date,date2,date3]:
    finder = re.findall(r'(\d{1,2})[\.\-\/](\d{2})[\.\-\/](\d{4})',i)
    print("day : " + finder[0][0])
    print("month : " + finder[0][1])
    print("year : " + finder[0][2])

避免使用正则表达式来解析日期字符串。使用 dateutil 模块中的 parser.parse(您可以使用 cmd pip install python-dateutil 通过 pip 安装)

>>> from dateutil import parser
>>> for date_str in [date,date2,date3]:
...     dt = parser.parse(date_str)
...     print(f"day : {dt.day}, month: {dt.month}, year: {dt.year}")
... 
day : 13, month: 6, year: 2020
day : 13, month: 6, year: 2020
day : 13, month: 6, year: 2020