使用 re.findall() 从字符串文本中获取日期
Getting a date from a string text with re.findall()
我正在尝试从整个字符串文本中提取日期。但我不知道如何解决这个问题:
我找到的日期格式是 19 Oct. 20 或 19 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))'
(?:\d{4}\b|\d{2}\b(?!:\d))
将匹配后跟单词边界的四个数字,或者匹配后跟单词边界但不后跟 :
和数字的两个数字。
我正在尝试从整个字符串文本中提取日期。但我不知道如何解决这个问题:
我找到的日期格式是 19 Oct. 20 或 19 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))'
(?:\d{4}\b|\d{2}\b(?!:\d))
将匹配后跟单词边界的四个数字,或者匹配后跟单词边界但不后跟 :
和数字的两个数字。