Как мне изменить этот REGEX, чтобы забрать все даты в тестовой строке

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

Я думаю, что мое регулярное выражение спрашивает

начиная с границы слова

найти любой месяц (правильно написано и заглавными буквами

Далее требуется наличие одного или нескольких пробелов

с последующими 1 или 2 цифрами

может быть одна или ноль запятых рядом

с последующим одним или несколькими пробелами

тогда должно быть 4 цифры

и это может заканчиваться запятой, непосредственно примыкающей к последней цифре

Как только я получу даты, я собираюсь их проверить, чтобы не беспокоиться о деле

1 января 2999 случаев рома, как будто я могу проверить, находится ли дата в допустимом диапазоне.

Я обнаружил, что когда я заменяю первый месяц на декабрь, регулярное выражение возвращает обе даты. Я играл с \ b. и другие варианты, но, кажется, не могу пройти это.

Любые наблюдения будут высоко оценены

Ответы на вопрос(2)

Ваш ответ на вопрос