sprawdzanie daty - wyrażenie regularne w R

sprawdzanie daty - wyrażenie regularne w R
AN
  • Rejestracja: dni
  • Ostatnio: dni
0

Cześć, chcę sprawdzić poprawność daty w R. Niestety nie wiem, dlaczego funkcja grepl zwraca TRUE w tym przypadku? Wydaje mi się, że ta data wcale nie pasuje do wzorca.

Kopiuj
date <- "2019-02-249"
grepl("[0-9]{4}-[0-9]{2}-[0-9]{2}", date)
lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5025
7

Łapie Ci 2019-02-24, jak Dasz od początku do końca: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$, to już nie. A tak w ogóle to nie jest walidacja poprawnej daty.

AN
  • Rejestracja: dni
  • Ostatnio: dni
0

Dzięki! Wiem, że nie jest to idealna walidacja daty, ale w moim przypadku to wystarczy.

PerlMonk
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa 🐪
  • Postów: 1719
4

Nie używaj zapisu [0-9] do dopasowania dowolnej cyfry jeśli nie masz powodu (najczęściej nie masz). Do dopasowania dowolnej cyfry użyj \d. Dzięki temu całe wyrażenie jest krótsze i bardziej czytelne. Wtedy propozycja @lion137 będzie wyglądać tak ^\d{4}-\d{2}-\d{2}$

rgawron
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Cannes
  • Postów: 67
2

IMHO zamiast wyrażeń regularnych, czytelniej będzie użyć format.Date() tak, jak pokazano w pierwszej odpowiedzi w tym poście:

https://stackoverflow.com/questions/13450360/how-to-validate-date-in-r

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.