Hey.
Ich möchte alle IDs matchen, bis auf die, die als Wert eine "0" haben. Ist das mit Regex möglich oder muss ich per IF-Abfrage rangehen?
string source = "irgendetwas id=012 etwasanderes id=210 nochanders id=0 schluss";
Ich habe versucht lookaheads oder lookbehinds zu verwenden, aber das hat noch nicht so recht funktioniert. Mein bisheriges Pattern:
string pattern = @"id=\d+(?<!0)";
Lässt zwar die "id=0" weg, aber auch die "id=210", da letzte Ziffer eine 0 ist.
Liebe Grüße
Hallo Bunnychecker,
ein negativer Lookahead ist schon das richtige, um bestimmte Werte auszuschließen.
Sofern sichergestellt ist, dass die Ids nicht mit führenden Nullen beginnen, reicht aber schon id=[1-9]\d*
.
Mit id=([1-9]\d*|0\d+)
würde man sogar führende Nullen zulassen und trotzdem eine einzelne Null nicht matchen.
Ansonsten muss dein Lookahead ausdrücken, was du willst, nämlich keine einzelne Null, also keine 0 nach der etwas anders folgt als eine Ziffer: id=(?!0(\D|$))\d+
herbivore
Vielen Dank.
Das Erste Pattern ist logisch und müsste eigentlich auch schon reichen.