Mam następujący kod pasujące datyKorzystanie Python i regex wyodrębnić różne formaty dat
import re
date_reg_exp2 = re.compile(r'\d{2}([-/.])(\d{2}|[a-zA-Z]{3})\1(\d{4}|\d{2})|\w{3}\s\d{2}[,.]\s\d{4}')
matches_list = date_reg_exp2.findall("23-SEP-2015 and 23-09-2015 and 23-09-15 and Sep 23, 2015")
print matches_list
Wyjście Spodziewam jest
["23-SEP-2015","23-09-2015","23-09-15","Sep 23, 2015"]
Co otrzymuję jest:
[('-', 'SEP', '2015'), ('-', '09', '2015'), ('-', '09', '15'), ('', '', '')]
Proszę sprawdzić link do regex
here.
myślę Twoja pierwsza '(' może być w złym miejscu - dwie pierwsze cyfry nie są przechwytywane, pierwszy rzeczą, którą powiedziałeś, aby ją uchwycić, jest sekwencja '[- /.]' –
Naprawdę trudno jest to zrobić za pomocą regex ... a po prostu użyj '' 23-SEP-2015 i 23-09-2015 oraz 23-09-15 i 23 września 2015 ".split (" i ")" w tym przypadku? –
W tym przypadku działa, ale ciąg wejściowy nie jest faktycznie oddzielony przez 'i'. Może to być 'Ten ciąg znaków to 23-09-2015 i może być również czymś'. Potrzebuję meczu z napisem '['23 -09-2015 ']' –