Seite 1 von 1

Problem mit einem regulären Ausdruck ...

Verfasst: Samstag 20. Mai 2023, 14:46
von drnicolas
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 ?

Re: Problem mit einem regulären Ausdruck ...

Verfasst: Samstag 20. Mai 2023, 14:56
von geraldfo
Schau dir einmal die Bedeutung des Dollarzeichens an!

LG

Re: Problem mit einem regulären Ausdruck ...

Verfasst: Samstag 20. Mai 2023, 15:25
von snafu
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.

Re: Problem mit einem regulären Ausdruck ...

Verfasst: Samstag 20. Mai 2023, 15:38
von __blackjack__
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.

Re: Problem mit einem regulären Ausdruck ...

Verfasst: Sonntag 21. Mai 2023, 12:02
von drnicolas
Vielen Dank !
Das hat mir sehr weiter geholfen.
Wie müsste ich den regex ändern damit die gemischten Trennzeichen mit erfasst/ausgeschlossen werden?

Re: Problem mit einem regulären Ausdruck ...

Verfasst: Sonntag 21. Mai 2023, 17:44
von narpfel
@drnicolas: Das erste Trennzeichen in einer Gruppe capturen und dann für das andere eine Backreference benutzen.