Jakiego wyrażenia regularnego w Pythonie używam do dopasowywania dat takich jak to: "11/12/98"?Python regex dopasowanie data
24
A
Odpowiedz
33
Można szukać cyfr oddzielonych forward-ukośniki:
In [146]: import re
In [152]: match=re.search(r'(\d+/\d+/\d+)','The date is 11/12/98')
In [153]: match.group(1)
Out[153]: '11/12/98'
Oczywiście nieprawidłowe daty będzie również zgodne:
In [154]: match=re.search(r'(\d+/\d+/\d+)','The date is 99/99/99')
In [155]: match.group(1)
Out[155]: '99/99/99'
Można potwierdzić datę używając strptime
(patrz niżej).
Zamiast wyrażenia regularnego, można analizować go w datetime.datetime
obiektu, który jest prawdopodobnie bardziej przydatne:
In [140]: datetime.datetime.strptime("11/12/98","%m/%d/%y")
Out[140]: datetime.datetime(1998, 11, 12, 0, 0)
In [141]: datetime.datetime.strptime("11/12/98","%d/%m/%y")
Out[141]: datetime.datetime(1998, 12, 11, 0, 0)
In [143]: date.year
Out[143]: 1998
In [144]: date.month
Out[144]: 11
In [145]: date.day
Out[145]: 12
aby sprawdzić, czy ciąg cyfr oddzielonych forward-ukośniki reprezentuje poprawną datę , możesz użyć bloku try..except
. Nieprawidłowe daty podniesie ValueError
:
In [159]: try:
.....: datetime.datetime.strptime("99/99/99","%m/%d/%y")
.....: except ValueError as err:
.....: print(err)
.....:
.....:
time data '99/99/99' does not match format '%m/%d/%y'
1
znajdę poniżej RE działa dobrze na datę w następującym formacie;
- 14-11-2017
- 14.11.2017
- 14 | 11 | 2017
To może zaakceptować lat od 2000-2099
Proszę nie zapomnieć dodać $ na końcu, jeśli nie, to 14-11-201 lub 20177
date="13-11-2017"
x=re.search("^([1-9] |1[0-9]| 2[0-9]|3[0-1])(.|-)([1-9] |1[0-2])(.|-|)20[0-9][0-9]$",date)
x.group()
wyjście = '13 -11-2017 '
Powiązane problemy
- 1. Regex, wybierz najbliższe dopasowanie
- 2. Dopasowanie do łańcucha Regex?
- 3. Co to dopasowanie regex `/^.*$/`?
- 4. Python regex analizować strumień
- 5. scala regex group dopasowanie i zastąpić
- 6. Dopasowanie foo lub paska vim regex
- 7. Regex - dopasowanie zwraca Brak. Gdzie się mylę?
- 8. Wymagane dopasowanie Regex i opcjonalne części łańcucha
- 9. dopasowanie do regex na R gregexpr
- 10. Zapętlenie przez python regex pasuje
- 11. dopasowanie wielu linii w python wyrażenie regularne
- 12. Python unpack buffer data
- 13. Python: data, formatowanie czasu
- 14. Python lambda z regex
- 15. strip verbose python regex
- 16. Python RegEx wielu grup
- 17. Python Regex Negative Lookbehind
- 18. Python - pojedynczy vs wielowierszowego REGEX
- 19. Python - ip <-> dopasowanie podsieci?
- 20. Zwróć dopasowanie regex w skrypcie BASH, zamiast go zastępować
- 21. Regex dopasowanie A-Z, a-z, 0-9, _ i
- 22. Błąd Regex Regex: niezgodne dopasowanie regexp kodowania (wyrażenie regularne ASCII-8BIT z ciągiem znaków UTF-8)
- 23. Python Regex dla dzielonych słów
- 24. Python regex zły zakres znaków.
- 25. Ukośnik naprzód w regex Python
- 26. Python/Regex - Dopasuj., #. w String
- 27. Python Regex wolniej niż oczekiwano
- 28. Python Regex natychmiast zastępuje grupy
- 29. python regex pierwszy/najkrótszy mecz
- 30. Podsumowanie podciągów doładowania dopasowanie
Przepraszam, mój błąd, przetestowałem go na 4 cyfry :) – Bronek