我正在尝试匹配给定字符串中任意数量的正确格式日期。要使日期格式正确,它必须以 dd-mm-yyyy 的形式出现。因此 dd 和 mm 不能只有一个数字,它们需要 2 并且它们需要在正确的范围内;这意味着 day 必须在 1 到 31 之间,而 month 必须在 1 到 12 之间。
我让它适用于一种类型的输入,但它与另一种输入不匹配。这是我的代码:
#!/usr/bin/env python
from sys import stdin
from re import compile
myFormat = compile(r'(?=([0-2]\d|3[0-1])-(0\d|1[0-2])-(201[3-5]))' )
print myFormat.findall(stdin.readline())
输入 1:
777-444---21-12-2013-12-2013-12-2013---444-777
输出:
[('21', '12', '2013'), ('13', '12', '2013'), ('13', '12', '2013')]
到目前为止,一切都很好。但如果我有输入:
0012-10-2012-10-2012
它什么都不匹配。正确的输出应该是:
[('12', '10', '2012'), ('12', '10', '2012')]
请帮我找到正确的正则表达式来执行此操作
编辑
我只想匹配 2012 年到 2015 年的年份。