Übereinstimmende Daten mit regulären Ausdrücken in Python?

Ich weiß, dass es ähnliche Fragen wie meine gibt, die beantwortet wurden, aber nachdem ich sie durchgelesen habe, habe ich immer noch nicht die Lösung, nach der ich suche.

Unter Verwendung von Python 3.2.2 muss "Monat, Tag, Jahr" mit dem Monat als Zeichenfolge abgeglichen werden, wobei "Tag" für Februar und 29 für Februar in einem Schaltjahr nicht mehr als 30, 31 oder 28 Zeichen lang ist. (Grundsätzlich ein WIRKLICHES und gültiges Datum)

Das habe ich bisher:

<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>

Ich bin immer noch nicht so vertraut mit der Regex-Syntax, daher kann es vorkommen, dass sich unnötige Zeichen darin befinden (das [,] [] für Komma und Leerzeichen erscheint mir falsch), aber wenn ich versuche, eine Übereinstimmung zu finden " 26. Januar 1991 "In meiner Beispieltextdatei ist der Ausdruck der Elemente in" Übereinstimmungen "(" Januar "," 26 "," 1991 "," 19 ").

Warum erscheint die zusätzliche '19' am Ende?

Welche Dinge könnte ich in meinem regulären Ausdruck hinzufügen oder ändern, damit ich Daten richtig validieren kann? Im Moment ist mein Plan, fast alle Daten zu akzeptieren und sie später mithilfe von Konstrukten auf hoher Ebene auszusortieren, indem die Tagesgruppierung mit der Monats- und Jahresgruppierung verglichen wird, um festzustellen, ob der Tag <31,30,29,28 sein sollte

Jede Hilfe wäre sehr dankbar, einschließlich konstruktiver Kritik an der Gestaltung meines Regex.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage