2016-02-15 6 views
6

chciałbym dopasować umieć dopasować datę jak ten „paź 21, 2014” lub „21 października 2014”regex datę jak nazwa miesiąca dzień przecinkiem i rok

co zrobiłem do tej pory jest \b(?:Jan?|?:Feb?|?:Mar?|?:Apr?|?:May?|?:Jun?|?:Jul?|?:Aug?|?:Sep?|?:Oct?|?:Nov?|?:Dec?) [0-9]{1,2}[,] (?:19[7-9]\d|2\d{3})(?=\D|$) ale to nie dostać mnie wszędzie

  • na krótki muszę dopasowywanie mój ciąg być: „Miesiąc [spacja] Dzień [przecinek] [spacja] Rok” i nie dbam o latach przestępnych a dni miesiąca powinny być dowolne od 1 do 31 bez wiodącego 0
  • Potrzebuję tego wyrażenia regularnego do pracy na pythonie
+1

Czy możesz dodać wszystkie możliwe ciągi wejściowe, zarówno ważne, jak i nieprawidłowe – Tushar

+1

Należy również dodać kompletny kod, a nie '...' – Tushar

+1

Założę się, że zapomniałeś: 1) ograniczniki regex, 2) podwójne ukośniki odwrotne, 3) przetestuj to na [regex101.com] (http://regex101.com). W jakim języku się pisze? Co to jest smak regex? –

Odpowiedz

13

Ten może wystarczy na twoje potrzeby.

Pamiętaj jednak, że trzeba będzie bardziej wyrafinowane walidacji takie jak sprawdzanie poprawności liczbę dni dla danego miesiąca (słownie lutego może mieć tylko do 28 dni (29 w bissext lat), i tak dalej)

(Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)\s+\d{1,2},\s+\d{4} 

Zagraj w nim here.

To zdecydowanie bardzo proste wyrażenie i musisz mieć wiele lepszych rozwiązań, ale być może to może wystarczyć do twoich potrzeb, nie wiem.

+0

To pasuje do pełnej nazwy, z powodu (\ w +) ?. Zobacz link. Chodzi mi o to, że walidacja jest zdecydowanie niska, ponieważ Janaaaaa będzie pasować. Zmienię to. – Veverke

+0

Alternatywy, które mają ten sam prefiks, spowolnią wykonywanie kodu za pomocą tego wyrażenia regularnego. Jeśli łańcuch wejściowy jest krótki, jest w porządku, jeśli jest długi, może to być problem. Dobrym pomysłem jest zawarcie umowy tak, jak ma to OP. –

+0

Tak, Wiktor, to zdecydowanie nie jest wydajność. Ponownie, po prostu chciałem zostawić OP z czymś. Nie rozumiem, co masz na myśli, mówiąc "dobry pomysł, aby * kontraktować * tak, jak ma to OP". – Veverke