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: 118
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: 14196
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.
“Every thinking person fears nuclear war and every technological nation plans for it. Everyone knows
it's madness, and every country has an excuse.” — Carl Sagan, Cosmos, Episode 13: Who Speaks for Earth?
Benutzeravatar
/me
User
Beiträge: 3561
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: 118
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