Hallo,
ich komme gerade seit zu viel Zeit nicht mit einer Regex weiter :)
Ich möchte in ein FileLog nur mit einer speziellen Endung schreiben.
Beispiel:
bla.bla 100 bla
Hierzu habe ich eine FileLog-Definition:
define bla.bla.filelog FileLog ./log/bla.txt .*bla
Dies greift natürlich. Leider greift aber auch ein "bla.bla 100 bla-bla". Ich würde halt gerne eine RegEx erstellen, die nur " bla" als mit vorangestellten whitespace greift und nicht mit Bindestrich "-".
define bla.bla.filelog FileLog ./log/bla.txt .*\ bla
müsste meines Erachtens funktioniert. Tuts aber leider nicht:
wrong syntax: define <name> FileLog filename regexp [readonly]
Kann mir hier ggf. jemand weiterhelfen?
Lieben Dank vorab
dmq
versuchs mal so:
define bla.bla.filelog FileLog ./log/bla.txt .*\sbla
\s steht für ein "Whitespace"-Zeichen (nicht sichtbare Zeichen wie Leerzeichen, Tabulator, Zeilenumbruch,...)
Gruß
Markus
Hi Markus,
besten Dank, funktioniert. Ich hätte mir mal besser die Perl-Syntax angeguckt :)
Danke für die schnelle und funktionale Antwort,
dmq
... meine Lernkurve ist gerade eher sinusförmig ...
Ich möchte im Log Zeilen zusammenstreichen, also hieraus einzelne Zeilen fischen:
MAXT_.* erzeugt
2017-02-01_21:23:45 MAXT_TUER1 battery: ok
2017-02-01_21:23:45 MAXT_TUER1 onoff: 0
2017-02-01_21:23:45 MAXT_TUER1 closed
MAXT_[A-Z0-9]*.closed bringt
2017-02-01_21:23:45 MAXT_TUER1 closed
aber
MAXT_[A-Z0-9]*.onoff
findet nichts - ???
Könnte jemand einen Tipp geben?
Holger
Nach onoff kommt ja auch noch mehr. Das berücksichtigt aber deine regexp nicht. Füge daher .* nochmal am Ende an.
Zum Thema Lernkurve. Sinus ist doch nicht schlecht. Da geht's immer wieder Berg auf. Tangens ist viel schlimmer ;)
Hallo Markus,
Danke für den Tipp, jetzt hab ich auch den Aha-Effekt gehabt, was eigentlich passiert ->sin(90)==1 :)
Aber einen Schritt weiter bin ich wieder in der Wüste:
MAXT_.*onoff.* funktioniert also, aber
MAXT_.*\sonoff.* nicht.
MAXT_.*\x20onoff.* auch nicht
MAXT_TUER1\sonoff.* auch nicht
-> sin(270)==-1 >:(
Das bla-Demo oben sieht doch einfach aus, oder?
VG Holger
Hallo Holger,
das hat folgenden (einfachen) Grund.
Event-Regexp's müssen auf folgendes Schema passen: <NAME>:<EVENT>
In deinem konkreten Beispiel haben <NAME> und <EVENT> folgende Inhalte:
<NAME> = "MAXT_TUER1"
<EVENT> = "onoff: 0"
Deine Regexp muss also auf folgende Zeichenkette passen: "MAXT_TUER1:onoff: 0"
Im Event-Monitor wird <NAME> und <EVENT> mit einem Leerzeichen getrennt, der Optik/Übersichtlichkeit wegen.
Daher funktionieren folgende Abwandlungen:
MAXT_.*onoff.*
MAXT_.*:onoff.*
MAXT_.*:onoff:\s.*
MAXT_.*:onoff:\s\d+
MAXT_TUER1:onoff.*
Ich hoffe jetzt ist die Lernkurve wieder bei sin(90) angekommen ;)
Gruß
Markus
Hallo Markus,
OK, OK, das erklärt natürlich mein vergebliches Mühen!
Danke und VG Holger :)