Wpis z mikrobloga

#naukaprogramowania #python
Uczę się pythona, na ten moment ćwiczę regexy. Chcę napisać regex który wykryłby mi jeden z wzorców daty (dzień miesiąc rok lub na odwrót). Kiedy daję tylko jeden z tych wzorców jest ok, kiedy są dwa to dostaję
[('3', '/', '14', '/', '2019', '', '', '', '', ''), ('03', '-', '14', '-', '2019', '', '', '', '', ''), ('', '', '', '', '', '2015', '/', '3', '/', '19')]
Co w kodzie powoduje że dodaje mi '', '', '', '', '' do znalezionej listy? regex poniżej
dateRegex = re.compile(r'''
(\d{1,2})(/|-)(\d{1,2})(/|-)(\d{4})|
(\d{4})(/|-)(\d{1,2})(/|-)(\d{1,2})
''', re.VERBOSE )
  • 3
@Woody_90: dobra, chyba rozumiem o co ci chodzi.

Nie tylko o grupy, ale też o alternatywy. Brakuje ci nawiasów:

##(\d{1,2})(/|-)(\d{1,2})(/|-)(\d{4}) | (\d{4})(/|-)(\d{1,2})(/|-)(\d{1,2})
(((\d{1,2})(/|-)(\d{1,2})(/|-)(\d{4}))|((\d{4})(/|-)(\d{1,2})(/|-)(\d{1,2})))
Wtedy będziesz mieć gwarancję, że pierwsza grupa będzie mieć albo jedną datę, albo drugą.