Я новичок в Python, но мне нужно сделать регулярное выражение, чтобы выбрать даты в формате dd-mm-yyyy. Я написал примерно так:Python regex date
format1 = re.findall('[0-2][0-9]-02-(\d){4}|(([0-2][0-9]|30)-(04|06|09|11)-(\d){4})|(([0-2][0-9]|30|31)-(01|03|05|07|08|10|12)-(\d){4})',article)
Он также проверяет правильность формата даты. Я проверил, работает ли он на pythex.org I возвращает правильные даты, но, к сожалению, также несколько пустых матчей и случайных чисел:
Match 1
1. None
2. None
3. None
4. None
5. None
6. 21-10-2005
7. 21
8. 10
9. 5
Match 2
1. None
2. None
3. None
4. None
5. None
6. 31-12-1993
7. 31
8. 12
9. 3
Как я могу улучшить регулярное выражение, чтобы вернуться только даты или все, что ни капли Дата?
Я немного запутался. Каково именно возвращение, которое вы ищете? Например, если article = '10 -10-1010 'и вы передаете его на python, вы получите >>> [(' ',' ',' ',' ',' ', '10 -10- 1991 ',' 10 ',' 10 ',' 1 ')] Вы просто хотите вернуть его '10 -10-1010'? Правда? Ложь? – Dval
всего 10-10-1010 'было бы хорошо – Rabbit