Hallo,
ich habe wieder mal ein RegEx-Problem.
In einem Trace habe ich folgende Zeilen:
====================================
*IP2 TRY HDF: AUTOLAS(S:WSS)
*IP2 CallHDF: AUTOLAS(S:WSS) I:0
*IP2 TRY HDF: AUTOLAS(S:SAMH164)
*IP2 CallHDF: AUTOLAS(S:SAMH164) I:1
*IP4 TRY HDF: AUTOLAS(S:MRM164)
*IP4 CallHDF: AUTOLAS(S:MRM164) I:0
====================================
Ich wuerde gerne nur die Zeilen mit RegEx filtern welche ein
"AUTOLAS(S:" und am Ende der Zeile nur ein "I:1" haben.
Diese Steuergeraete sind naemlich WAHR und im Fahrzeug verbaut.
Die anderen mit "I:0" nicht.
Ich habe es mit folgendem RegEx veruscht komme aber nicht zum Ziel:
AUTOLAS((S🙂[^I:0]
Klappt aber nicht.
Danke fuer Hilfe.
Joachim
Hallo jofenchel,
@"AUTOLAS(S:.*I:1$" sollte es tun.
herbivore
PS: Eigentlich hat der Doppelpunkt ':' alleine keine Sonderbedeutung, aber sicher ist sicher ':'.
Hallo Herbivore,
klappt einwandfrei. 👍
Vielen Dank fuer die schnelle Hilfe.
Gruss
Joachim
Hallo jofenchel,
vielleicht noch, wie ich beim Erstellen vorgegangen bin:
Ich nehme mir eine Zeile, die gefunden werden soll:
@"*IP2 CallHDF: AUTOLAS(S:SAMH164) I:1"
Dann schmeiße ich raus, was vorne und hinten egal ist (hier nur vorne):
@"AUTOLAS(S:SAMH164) I:1"
Dann ersetze ich, was mittendrin egal ist durch '.*'
@"AUTOLAS(S:.*I:1"
Dann werden alle Zeichen gequotet, die normalerweise eine Sonderbedeutung haben, hier aber für das Zeichen selbst stehen (dieser Schritt wird gerne vergessen, auch von mir 🙂:
@"AUTOLAS(S:.*I:1"
Und dann noch Zeilenanfang und Zeilenende berücksichtigen (hier nur Zeilenende).
@"AUTOLAS(S:.*I:1$"
Wenn man es noch etwas flexiber haben will, kann man jetzt an allen Stellen, wo möglicherweise Leerzeichen stehen könnten, '\s*' einsetzen. Das ist insbesondere bei Benutzereingaben nützlich.
@"AUTOLAS\s*(\sS\s:.I\s:\s1\s$"
herbivore
Hallo herbivore,
danke fuer die sehr gute Erklaerung.
Das hat mir geholfen den RegEx besser zu verstehen.
Ich habe mir vor zwei Tagen das Buch von O'Reilley bestellt.
Regulaere Ausdreucke.
Gruss
Joachim
Gibt auch von mir ein Danke für diese Schritt-für-Schritt Erklärung! 🙂