Hauptmenü

userReadings mit RegEx

Begonnen von Hi2Helmi, 07 März 2019, 17:26:32

Vorheriges Thema - Nächstes Thema

Hi2Helmi

Hallo,
ich habe mir einen userReadings mit RegEx gebastellt.
Ich habe eine Zeit im Format "HH:MM"
Wenn die Stunde z.B. 04 ist wünsche ich mir das Ergebniss 4 (ohne Null voran)
Wenn die Stunde z.B. 12 ist wünsche ich mir das Ergebniss 12

Meine userReadings ist folgender:
stunden {my $v = ReadingsVal($name,"state","0");; $v =~ s/([1]?[0-9])[:](\d\d)/$1/;; $v}
Mein Problem liegt darin, dass die Null nicht weggemacht wird, obwohl es so sein sollte.
Also 04:12 wird zu 04 und nicht zu 4.
Während 14:12 zu 14 wird.
Versehe nicht wo der Fehler liegt.

Über einen RegEx Tester funktioniert es nämlich genau so wie ich es mir wünsche!
MfG
Florian

Hi2Helmi

Hab es jetzt auf folgender weise gelöst:
stunden {my $v = ReadingsVal($name,"state","0");; $v =~ s/([1]?[0-9])[:](\d\d)/$1/;; $v = $v+0;; $v}
Dies ist zwar keine Antwort auf meinen nicht funktionierenden RegEx. Kann aber damit leben.
MfG
Florian

DeeSPe

#2
stunden {my $v = ReadingsVal($name,"state","0");; $v =~ s/^0?(\d\d?):\d\d/$1/;; $v}

Gruß
Dan

EDIT: Sorry, meine erste Lösung hat nicht Stunden, sondern die Zeit ohne führende Null zurück gegeben.
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe