Seite 1 von 1

regex-Problem mit zusätzlichem Datumsformat

Verfasst: Donnerstag 25. April 2024, 11:25
von drnicolas
mit folgendem Regex finde ich Daten in diesem Format:
[0-3]?[0-9][\/.][0-3]?[0-9][\/.](?:[0-9]{2})?[0-9]{2}
d.m.jj
d.m.jjjj
d/m/jj
d/m/jjjj

d und m jeweils ein- oder 2-stellig. Das funktioniert auch prima

Jetzt wurd in unserem OP-zentrum eine neue Arthroskopie-Einheit installiert und die erzeugt Datumsangaben im Format jjjj/mm/dd

Wie kriege ich das jetzt hin, dass auch dieses Format erkannt wird ?
Ich brauche diese Daten für eine Zuordnung

Re: regex-Problem mit zusätzlichem Datumsformat

Verfasst: Donnerstag 25. April 2024, 11:47
von __blackjack__
@drnicolas: Alternativen trennt man durch "|" und dann halt der reguläre Ausdruck für das neue Datumsformat.

Der "/" hat in regulären Ausdrücken übrigens keine besondere Bedeutung, den muss man nicht escapen.

Re: regex-Problem mit zusätzlichem Datumsformat

Verfasst: Freitag 26. April 2024, 16:27
von /me
Nur zur Sicherheit: Der Ausdruck matcht natürlich auch so etwas wie "39.39/393" und liefert "39.39/39" zurück.

Man sollte die erhaltenen Daten auf jeden Fall anschließend verifizieren.

Re: regex-Problem mit zusätzlichem Datumsformat

Verfasst: Samstag 27. April 2024, 07:10
von drnicolas
das hier habe ich zufällig gefunden:
DATE_REGEX = re.compile(
r"(\b|(?!=([_-])))([0-9]{1,2})[\.\/-]([0-9]{1,2})[\.\/-]([0-9]{4}|[0-9]{2})(\b|(?=([_-])))|"
r"(\b|(?!=([_-])))([0-9]{4}|[0-9]{2})[\.\/-]([0-9]{1,2})[\.\/-]([0-9]{1,2})(\b|(?=([_-])))|"
r"(\b|(?!=([_-])))([0-9]{1,2}[\. ]+[a-zA-Z]{3,9} [0-9]{4}|[a-zA-Z]{3,9} [0-9]{1,2}, [0-9]{4})(\b|(?=([_-])))|"
r"(\b|(?!=([_-])))([^\W\d_]{3,9} [0-9]{1,2}, ([0-9]{4}))(\b|(?=([_-])))|"
r"(\b|(?!=([_-])))([^\W\d_]{3,9} [0-9]{4})(\b|(?=([_-])))|"
r"(\b|(?!=([_-])))([0-9]{1,2}[^ ]{2}[\. ]+[^ ]{3,9}[ \.\/-][0-9]{4})(\b|(?=([_-])))|"
r"(\b|(?!=([_-])))(\b[0-9]{1,2}[ \.\/-][a-zA-Z]{3}[ \.\/-][0-9]{4})(\b|(?=([_-])))",
)