Dopasowywanie dat do wyrażeń regularnych w Pythonie?

Wiem, że istnieją podobne pytania do moich, na które udzielono odpowiedzi, ale po przeczytaniu ich wciąż nie mam rozwiązania, którego szukam.

Używając Pythona 3.2.2, muszę dopasować „Miesiąc, dzień, rok” do miesiąca będącego ciągiem znaków, dzień to dwie cyfry nie przekraczające 30, 31 lub 28 w lutym i 29 w lutym w roku przestępnym. (Zasadniczo PRAWDZIWA i prawidłowa data)

Oto, co mam do tej pory:

<code>pattern = "(January|February|March|April|May|June|July|August|September|October|November|December)[,][ ](0[1-9]|[12][0-9]|3[01])[,][ ]((19|20)[0-9][0-9])"
expression = re.compile(pattern)
matches = expression.findall(sampleTextFile)
</code>

Nadal nie jestem zbyt zaznajomiony ze składnią wyrażeń regularnych, więc mogę mieć tam znaki, które są niepotrzebne ([,] [], aby przecinek i spacje miały zły kierunek), ale kiedy próbuję się dopasować ” 26 stycznia 1991 r. „W moim przykładowym pliku tekstowym drukowanie elementów w„ dopasowaniach ”to („ styczeń ”,„ 26 ”,„ 1991 ”,„ 19 ”).

Dlaczego dodatkowe „19” pojawia się na końcu?

Ponadto, jakie rzeczy mogę dodać lub zmienić w wyrażeniu regularnym, które pozwoliłyby mi prawidłowo zweryfikować daty? W tej chwili mam zamiar zaakceptować prawie wszystkie daty i pozbyć się ich później przy użyciu konstruktów wysokiego poziomu, porównując grupowanie dzienne z grupowaniem miesięcy i lat, aby sprawdzić, czy dzień powinien wynosić <31,30,29,28

Każda pomoc byłaby mile widziana, w tym konstruktywna krytyka tego, jak zamierzam projektować mój regex.

questionAnswers(6)

yourAnswerToTheQuestion