特定の日付を文字列として検証および修正するプログラムを作成しています。04121987
形式の日付としましょうddmmyyyy
。そのような日付の正規表現:
(0[1-9]|[12][0-9]|3[01])(0[1-9]|1[012])(19\d\d|20\d\d)
文字列を正規表現と一致させると、うまく機能します。Python の場合:
>>> regex = re.compile(r'(0[1-9]|[12][0-9]|3[01])(0[1-9]|1[012])(19\d\d|20\d\d)')
>>> regex.findall('04121987')
[('04', '12', '1987')]
私が文字列を持っている場合、それは有効な月ではない04721987
ことがはっきりとわかるため、文字列は正規表現と一致しません。72
>>> regex.findall('04721987')
[]
私が知りたいのは、正規表現が失敗する原因となる文字とその位置です。この場合は です7
。Pythonでこれを行うにはどうすればよいですか?