我正尝试用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
答案 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
您可以采取什么措施使捕获组成为非捕获组,并使其更加紧凑: