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