特定の文字列内の正しい形式の日付をいくつでも一致させようとしています。日付を正しい形式にするためには、dd-mm-yyyy の形式で表示する必要があります。したがって、dd と mm は 1 桁だけにすることはできません。2 桁が必要であり、正しい範囲内にある必要があります。つまり、日は 1 から 31 の間、月は 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 年までの年だけを一致させたいだけです。