Thread Regex für Timestamp matcht nicht so wie gewünscht (25 answers)
Opened by GwenDragon at 2024-02-01 12:07

Linuxer
 2024-02-01 13:12
#195804 #195804
User since
2006-01-27
3875 Artikel
HausmeisterIn

user image
Ohne die Verankerung am Ende kann der erste Regex bei +123A1234.11 zutreffen.

Im ersten Versuch beim Matching klappt es nicht, weil das A nicht erwünscht ist.
Wenn man dann im zweiten Versuch das "wenn vorhanden" als "oder auch eben nicht" interpretiert, dann kann die Regex-Engine den zweiten optionalen Teil im Regex und das A1234.11 ignorieren und es bleibt der Treffer für ^(\D)?(\d+) für den Anfang "+123" übrig.

Erst wenn der Ende-Anker dazu kommt, dann scheitert es eben am A, weil das halt nicht mehr ins Muster ^(\D)?(\d+)$ passt.


Ich hoffe, ich konnte mich in der Kürze halbwegs verständlich ausdrücken.

Auf https://regex101.com/ kann man das gut nachstellen.


Edits:
* Verschiedene Umformulierungen
+ regex101.com

Anhänge
image/png
1093 x 395
Screenshot.png

Last edited: 2024-02-01 13:42:01 +0100 (CET)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Regex für Timestamp matcht nicht so wie gewünscht