Jak zmodyfikować ten REGEX, aby pobrać wszystkie daty w ciągu testowym

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

Myślę, że mój regex pyta

zaczynając od granicy słowa

znajdź dowolny miesiąc (poprawnie pisane i pisane wielkimi literami

następnie wymaga, aby istniała jedna lub więcej białych spacji

następnie 1 lub 2 cyfry

dalej może być jeden lub zero przecinków

po którym następuje jedno lub więcej białych znaków

wtedy powinny być 4 cyfry

i może się skończyć przecinkiem bezpośrednio sąsiadującym z ostatnią cyfrą

Kiedy dostanę randkę, zamierzam je zweryfikować, więc nie martwię się o sprawę

1 stycznia 2999 przypadków rumu, jakbym mógł sprawdzić, czy data jest w prawidłowym zakresie.

Odkryłem, że kiedy zastępuję pierwszy miesiąc grudniem, wyrażenie regularne zwraca obie daty. Bawiłem się z b. i inne odmiany, ale nie wydaje mi się, żeby to przekroczyło.

Wszelkie obserwacje będą bardzo mile widziane

questionAnswers(2)

yourAnswerToTheQuestion