使用 re.findall() 从字符串文本中获取日期

Getting a date from a string text with re.findall()

我正在尝试从整个字符串文本中提取日期。但我不知道如何解决这个问题:

我找到的日期格式是 19 Oct. 2019 Oct. 2020

为此,我使用了以下代码:

'''re.findall(r'\d*\d (?:%s)\.? \d{2,4}\b' % '|'.join(m.title().rstrip('.') for m in calendar.month_abbr[1:]),string)'''

当文本中出现这样的内容时,问题就来了:19 Oct 16:35 and re.findall() returns 19 Oct 16.

我怎样才能只找到 return 我要找的东西?

谢谢!

如果两位数字后面有冒号和数字,您可能会匹配失败:

r'\d*\d (?:%s)\.? (?:\d{4}\b|\d{2}\b(?!:\d))'

regex demo

(?:\d{4}\b|\d{2}\b(?!:\d)) 将匹配后跟单词边界的四个数字,或者匹配后跟单词边界但不后跟 : 和数字的两个数字。