Felix Riesterer: Frage zu Regex

Beitrag lesen

Lieber Marcel,

[/?\d+(?<!/?[0)=[^]]+] (ungetestet!)
"Lookbehind assertion is not fixed length"

dann machen wir die assertion in ihrer Länge fix. Wir wollten ja das Zeichen vor der Zahl haben, um sicherzustellen, dass wir keine 10-er durchgehen lassen, wenn wir 0-er erlauben. Also nutzen wir doch die Character Class etwas schlauer!

Wir hatten "(?<" als lookbehind, "!" für negativ und dann "/?" für eventuellen Slash (was in lookbehind/lookahead nicht geht, weil in der Länge variabel), was insgesamt "(?<!/?zahl) ergab. Es ist uns ja prinzipiell egal, welches Zeichen vor der Zahl steht (Slash oder eckige Klammer), solange wir die Zahl komplett haben. Das kann man auch als Character Class "[[/]" schreiben: Entweder Klammer oder Slash, aber eins von beiden muss es sein.

Ergo neuer Versuch (für null): [/?\d+(?<![[/]0)=[^]]+] (wieder ungetestet!)

Und? Zufriedenheit oder Fehlverhalten?

Liebe Grüße aus Ellwangen,

Felix Riesterer.