正则表达式捕获1985年6月15日

时间:2018-07-18 18:27:44

标签: python regex

我正尝试用1985年6月15日的形式捕获所有日期。

我正在使用正则表达式,这显然是错误的,但不确定是什么问题。任何帮助表示赞赏。

re.findall("\b\d{1,2}\s\D+\s([2][0]\d\d|[1][9]\d\d)\b"

我的逻辑:

\b | starts the expression
d{1,2} | 1 or 2 digits
\s | space
\D+ | any non digit character, no limit
\s | space
([2][0]\d\d|[1][9]\d\d) | the year 19xx or 20xx
\b | end boundary

2 个答案:

答案 0 :(得分:1)

这可能有帮助。

import re
s = "I'm trying to catch all dates with the form 15 Jun 1985."
print(re.findall(r"\b\d{1,2}\s[A-Za-z]+\s\d{4}\b", s))

输出:

['15 Jun 1985']

答案 1 :(得分:1)

您的正则表达式匹配,但您使用的是findall

从文档

如果模式中存在一个或多个组,则返回组列表

这样可以给您1985

您可以采取什么措施使捕获组成为非捕获组,并使其更加紧凑:

\b\d{1,2}\s\D+\s(?:20|19)\d\d\b

Demo