Как мне изменить этот 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. и другие варианты, но, кажется, не могу пройти это.
Любые наблюдения будут высоко оценены