Получение даты из строкового текста с помощью re.findall () - PullRequest
1 голос
/ 25 мая 2020

Я пытаюсь извлечь даты из всего текста строки. Но я не знаю, как решить эту проблему:

Формат дат, который я нахожу: 19 октября 20 или 19 октября 2020

Для этого я использую следующий код:

'''re.findall(r'\d*\d (?:%s)\.? \d{2,4}\b' % '|'.join(m.title().rstrip('.') for m in calendar.month_abbr[1:]),string)'''

Проблема возникает, когда в тексте появляется что-то вроде этого: 19 Oct 16: 35 и re.findall() возвращает 19 Oct 16.

Как я могу вернуть только то, что я ищу?

Спасибо!

1 Ответ

1 голос
/ 25 мая 2020

Вы можете не пройти сопоставление, если после двух цифр стоит двоеточие и di git:

r'\d*\d (?:%s)\.? (?:\d{4}\b|\d{2}\b(?!:\d))'

См. Демонстрацию регулярного выражения

(?:\d{4}\b|\d{2}\b(?!:\d)) будет соответствовать либо четырем цифрам, за которыми следует граница слова, либо двум цифрам, за которыми также следует граница слова, но без : и ди git.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...