Laden...

Negierte Zeichen

Erstellt von jofenchel vor 19 Jahren Letzter Beitrag vor 19 Jahren 1.921 Views
jofenchel Themenstarter:in
117 Beiträge seit 2005
vor 19 Jahren
Negierte Zeichen

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

49.485 Beiträge seit 2005
vor 19 Jahren

Hallo jofenchel,

@"AUTOLAS(S:.*I:1$" sollte es tun.

herbivore

PS: Eigentlich hat der Doppelpunkt ':' alleine keine Sonderbedeutung, aber sicher ist sicher ':'.

jofenchel Themenstarter:in
117 Beiträge seit 2005
vor 19 Jahren
Klappt

Hallo Herbivore,

klappt einwandfrei. 👍

Vielen Dank fuer die schnelle Hilfe.

Gruss

Joachim

49.485 Beiträge seit 2005
vor 19 Jahren

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

jofenchel Themenstarter:in
117 Beiträge seit 2005
vor 19 Jahren
Vorgehensweise

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

N
49 Beiträge seit 2005
vor 19 Jahren

Gibt auch von mir ein Danke für diese Schritt-für-Schritt Erklärung! 🙂