Hallo zusammen,
ich denke ich habe mein möglichstes getan, aber nach fast 10 Stunden Forum und unzählige try and error wände ich mich jetzt an euch.
folgendes Reading von KS300:
avg_day T: 15.5 H: 87 W: 1.1 R: 10.2
und ich möchte gerne die 10 raus filtern.
Ich habe mich auch intensiv mit regulären Ausdrücken beschäftigt, aber bei folgendem ist mein Latein stehen geblieben:
(R: )[0-9]+
damit bekomme ich R: 13
Leider konnte ich mit dem Regular Expression Tester keine Lookbehinds testen.
Ziel des ganzen ist es, wenn der Tageswert vom Regen über 5 liegt, die Rasenspränger nicht arbeiten zu lassen.
Grüße aus der Oberpfalz
Christian
nutz einfach das rain modul und lies den wert direkt aus dem reading (wobei er meine ich auch so das reading rain hat)
rain habe ich, aber das ist leider ein Wert der über den Monat hoch zählt, dann müsste ich auch wieder rechnen
ich weiss nicht was du genau gemacht hast, aber das das ergebniss wirklich R: 13 ist kommt mir sehr unwahrscheinlich vor.
du hast eine capture group in deiner regex. und die extrahiert nur R: und das leerzecihen.
das einfachste ist wenn du das ganze rückwärts angehst und die die zahl am ende des wertes extrahierst: if( ReadinsgVal('device', 'avg_day'. '' ) =~ m/([0-9.]+)$/ ) {
my $val = $1;
}
oder wenn du am R: aufhängen willst: /R:\s([0-9.]+)/
gruss
andre
Danke