Problem mit einem regulären Ausdruck ...

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: 105
Registriert: Sonntag 24. Juli 2016, 10:32

Ich versuche aus einem längeren Zeit Datumsangaben herauszulesen.

Dazu habe ich diesen regulären Ausdruck gefunden: "[0-3]?[0-9][\/.][0-3]?[0-9][\/.](?:[0-9]{2})?[0-9]{2}$"
Wenn ich das in einem Smulator ausprobiere, dann funktioniert das. Sowohl für 2stellige Jahresangaben wie auch vierstellig.

Leider aber nur wenn der Teststring tatsächlich nru ein Datum ist.
Setzte ich Zeichen davor und/oder dahinter, dann wird kein Match gefunden.

Ändere ich das auf ".*[0-3]?[0-9][\/.][0-3]?[0-9][\/.](?:[0-9]{2})?[0-9]{2}$" (also .* davor), dann kann ich beliebige Zeichen vor das Datum setzen.

Stehen aber Zeichen DAHINTER, dann wird wiederum kein Match gefunden.

Ich finde leider keine Lösung für einen modifizierten Regex.

Any ideas ?
geraldfo
User
Beiträge: 73
Registriert: Samstag 28. Januar 2023, 20:19
Wohnort: Nähe Wien
Kontaktdaten:

Schau dir einmal die Bedeutung des Dollarzeichens an!

LG
Benutzeravatar
snafu
User
Beiträge: 6857
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Außerdem gibt es neben re.match() auch re.search(). Bei letzterem können auch Zeichen vor und hinter dem Treffer stehen. Das Match wäre dann das Datum isoliert.
Benutzeravatar
__blackjack__
User
Beiträge: 14020
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Wobei ich bei `re.search()` noch sicherstellen wollen würde, das da keine Ziffern oder Trennzeichen vor oder hinter dem Match stehen, damit "42/20.5.202323" keinen Treffer ergibt. Und vielleicht möchte man ”Treffer” mit gemischten Trennzeichen auch ausschliessen, also beispielsweise "20.05/23" nicht als Treffer werten.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
drnicolas
User
Beiträge: 105
Registriert: Sonntag 24. Juli 2016, 10:32

Vielen Dank !
Das hat mir sehr weiter geholfen.
Wie müsste ich den regex ändern damit die gemischten Trennzeichen mit erfasst/ausgeschlossen werden?
narpfel
User
Beiträge: 690
Registriert: Freitag 20. Oktober 2017, 16:10

@drnicolas: Das erste Trennzeichen in einer Gruppe capturen und dann für das andere eine Backreference benutzen.
Antworten