Wie ändere ich dieses REGEX, um alle Daten in der Testzeichenfolge aufzunehmen?

test_string = '''dated as of October 17, 2012 when we went caroling, dated as of December 21, 2011 when we ate bananas'''


import re
import calendar

months_full = '|'.join([month for month in calendar.month_name][1:])

pattern_1 = r'\b' + months_full + r'\s+\d{1,2},?\s+\d{4},?'
test_pattern = re.compile(pattern_1)
x = test_pattern.findall(test_string)

print x

>>> 
['October', 'December 21, 2011']
>>> 

Ich glaube, mein Regex fragt

an einer Wortgrenze beginnen

Finde jeden Monat (richtig geschrieben und in Großbuchstaben geschrieben)

Als nächstes müssen ein oder mehrere Leerzeichen vorhanden sein

gefolgt von 1 oder 2 Ziffern

als nächstes kann es ein oder null Kommas geben

gefolgt von einem oder mehreren Leerzeichen

dann sollte es 4 Stellen geben

und es könnte mit einem Komma unmittelbar neben der letzten Ziffer enden

Sobald ich meine Daten erhalten habe, möchte ich sie validieren, damit ich mir keine Sorgen um den Fall mache

1. Januar 2999 Fälle von Rum, als ob ich überprüfen kann, ob das Datum in einem gültigen Bereich liegt.

Ich habe festgestellt, dass der reguläre Ausdruck beide Daten zurückgibt, wenn ich den ersten Monat durch Dezember ersetze. Ich habe mit \ b rumgespielt. und andere Variationen, scheinen aber nicht darüber hinwegzukommen.

Alle Beobachtungen werden sehr geschätzt

Antworten auf die Frage(2)

Ihre Antwort auf die Frage