NEWS
[gelöst] RegEx für Parser anpassen, nur wie?
-
Hallo,
nachdem ich seit Jahren mit fhem arbeite, bin ich nun dabei, (vorerst auf einem Parallel-System) mit ioBroker zu beginnen.
Meine Fortschritte sind soweit recht gut, über ein Problem stolpere ich aber im Moment bzgl Regex für den Parser.
Ich lese den Stand des Stromzählers über Volkszähler aus, der gibt folgendes als reinen Text über eine URL zurück:
{ "version": "0.5.1", "generator": "vzlogger", "data": [ { "uuid": "2459dbe0-ca8b-11e5-bae0-056d798c5a23", "last": 1527755518367, "interval": -1, "protocol": "d0", "tuples": [ [ 1527755280000, 15787.12 ] ] } ] }
Dabei ist die letzte Zahlenkolonne der Zählerstand (15787.12)
Mittels Parser und Regex \d{5,6}.\d{2} bekomme ich den Zählerstand zurück… fast immer.
Das Problem:
Wenn der Zählerstand keine Dezimalstelle hat, wird er z.B. nur so ausgegeben: 15787
In dem Moment greift Regex nicht und ich finde keine Lösung, ohne dass auch diverse andere Zahlenkolonnen aus dem Text erfasst werden.
Hat jemand eine Idee, wie sich das verbessern lässt?
Danke
Gruß Gerd
-
Zum testen gehst du auf regex101.com
Und was du suchst sind Gruppen und 'oder'.
Das ist auf der Seite alles Dokumentiert rechts unten. Achtung du musst JavaScript auswählen auf der Seite.
Gesendet von meinem m8 mit Tapatalk
-
Danke für den Tip mit Gruppen und Oder
Die Seite zum Testen kenne ich natürlich…;)
-
schaue ich mir nachher mal an
Gesendet von iPhone mit Tapatalk
-
Wenn der Zählerstand keine Dezimalstelle hat, wird er z.B. nur so ausgegeben: 15787 `
Eine Variante:
, (\d+.+\d) ]
In Gruppe 1 ist dann das Ergebnis.
-
Ich habe das nun über Nacht laufen lassen, um über mehrere Zählerstände ohne Dezimal zu kommen un es funktioniert perfekt.
Vielen Dank
-
Das erste + kannst Du noch einsparen : :lol: