Ich suche nach einer Regex, die einen string der Form ".*:.*:?.*" matcht, wenn es nach dem ersten Doppelpunkt nicht mit einem von mehreren festen strings weitergeht. Jemand eine Idee?
http://www.regextester.com/15
Gruß
Dan
Danke! Hilt mir aber nicht - was ganz klar mein Fehler ist, weil ich meine Frage unvollständig gestellt habe. Neuer Versuch:
Ich suche nach einer Regex, die einen string der Form ".*:.*:?.*" matcht, wenn vor dem ersten Doppelpunkt eine bestimmte regex gematcht wird und es nach dem ersten Doppelpunkt nicht mit einem von mehreren festen strings weitergeht.
Dann musst Du bitte etwas mehr erklären!
Was darf vor dem Doppelpunkt matchen und was darf danach nicht matchen?
Gib doch mal ein konkretes Beispiel.
Gruß
Dan
Danke, ich glaube, ich bin izwischen selbst drauf gekommen: Hintergrund war, daß ich in einem Logfile alle bis auf bestimmte events eines Zimmers/Stockwerks loggen möchte. Matchen soll also z.B.:
sz_lampe:on
sz_heizung:ValvePosition:0
sz_climate:humidity:55
Nicht matchen soll dagegen alles, was mit "D-firmware" oder "transmission-state" anfängt, also z.B.
sz_heizung:D-firmware:1.0
sz_heizung:transmission-state:outgoing publish sent
Mein Problem war, daß das negative lookahead immer am 2. Doppelpunkt gematcht hat. Die Lösung ist erschreckend offensichtlich: "[^:]*" statt ".*". Ich glaube also, mit der folgenden regex die Lösung gefunden zu haben:
^sz_[^:]*:(?!D-firmware|transmission-state).*