regex-Problem mit zusätzlichem Datumsformat

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
drnicolas
User
Beiträge: 87
Registriert: Sonntag 24. Juli 2016, 10:32

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
Benutzeravatar
__blackjack__
User
Beiträge: 13135
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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.
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
drnicolas
User
Beiträge: 87
Registriert: Sonntag 24. Juli 2016, 10:32

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|(?=([_-])))",
)
Antworten