[gelöst] Problem mit RegEx

Begonnen von Vize, 04 August 2016, 22:39:33

Vorheriges Thema - Nächstes Thema

Vize

Guten Abend,

stehe gerade etwas auf dem Schlauch...

Ich lasse mir den Zustand eines Rollos über ein Symbol darstellen, das je nach Öffnungszustand wechselt.
Hier der entsprechende code-Ausschnitt:

<div data-type="symbol"
   data-device="gz_213_rollo"
   data-get="level"
   data-icons='["oa-fts_shutter_100","oa-fts_shutter_90","oa-fts_shutter_80","oa-fts_shutter_70","oa-fts_shutter_60","oa-fts_shutter_50","oa-fts_shutter_40","oa-fts_shutter_30","oa-fts_shutter_20","oa-fts_shutter_10","oa-fts_window_2w"]'
   data-get-on='["[0-9]","[1][0-9]","[2][0-9]","[3][0-9]","[4][0-9]","[5][0-9]","[6][0-9]","[7][0-9]","[8][0-9]","[9][0-9]","100"]'
   data-on-color="#606060"
   data-on-background-color="#FFFFFF"
   data-background-icon="fa-square"
   class="grande centered top-space">
</div>


Nun kann der Wert für level im device aber nicht nur ganze Zahlen annehmen, sondern auch z.B. 7.5, 20.7, 30.2 usw...
Dann wird natürlich kein entsprechendes Symbol angezeigt.

Wie müsste die entsprechende RegEx bei data-get-on aussehen, damit auch bei diesen Werten ein passendes Symbol angezeigt wird?
Per google bin ich bisher nicht schlauer geworden, bzw. verstehe nicht, wie es aussehen muss.

Beispiel:
level=7.5
[0-9].[0-9] funktioniert nicht, kein Symbol
[0.9]{1,1}.[0-9] funktioniert nicht, kein Symbol
[0123456789].[0-9] funktioniert nicht, kein Symbol
[0-9]?.[0-9] funktioniert nicht, kein Symbol

bei level=99.5 funktioniert aber [9][0-9].[0-9] und das Symbol wird angezeigt...

Vielleicht kann mir jemand helfen oder mich in die richtige Richtung schubsen?

Danke!

Gruß
Andreas

setstate

RegExen müsste ich probieren, aber was ist mit nur numerischen Werte?
0,7,15,35,...100
Dann wird ein größer-gleich Vergleich und dieser Index, ab wann diese Bedingung passt, dann ausgewählt.

Bennemannc

Hallo,

also [3][0-9] bedeutet doch 3 und eine belibige Zahl von 0-9
der Reihenfolge nach prüfst Du zuerst [0-9] einstellige Zahl, dann würde danach doch [3].* reichen - 3 mit irgendetwas dahinter - egal was.

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

Vize

@Mario
Werde ich heute abend mal testen...

@Christoph
Mein Problem liegt hauptsächlich darin, dass kein Symbol bei "Dezimalzahlen" zwischen 0 und 9.9 angezeigt wird...

Wie müsste die RegEx denn aussehen, damit diese z.B. auf 7.5 oder 6.3 oder 8.4 (reading level) matcht?
[0-9].[0-9] klappt nicht, da wird dann kein Symbol angezeigt...

Diesbezüglich steht mir aber auch kein Wissen im Weg...

Gruß
Andreas

automatisierer

Zitat
Mein Problem liegt hauptsächlich darin, dass kein Symbol bei "Dezimalzahlen" zwischen 0 und 9.9 angezeigt wird...


Ist es möglich, dass die Zahlen 1-9 mit einem Leerzeichen auf zwei Stellen vor dem Komma aufgefüllt werden?

Bennemannc

Hallo,

[0-9].[0-9] kann nicht gehen, weil . ein belibiges Zeichen ist - wenn dann [0-9]\.[0-9] den Punkt ESCAPEN.

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

n4rrOx

Hi,

bin wohl derjenige hier mit der wenigsten Ahnung über RegEx, aber mit Hilfe vom Online Simulator auf https://regex101.com/ hab ich folgende Lösung rausgefunden... Angaben ohne Gewähr ^^


Wertebereich RegEx

0.0 - 9.9 (^[0-9]$|^[0-9][.].$)
...
70.0 - 79.9 ([7][0-9].*)
...
100 (100)


Zumindest sagt der Simulator, dass es passen könnte.

Gruß
Mathias

Vize

@Christoph
Aaah...OK, danke für die Erklärung...werde ich nacher mal ändern und testen.
Mit den Feinheiten der RegExen bin ich noch nicht so vertraut...

@automatisierer
Geht, glaube ich, nur über ein zusätzliches userReading. Level wird automatisch vom Rolladen-Aktor "erzeugt"...

@Mathias
Danke für deine Hinweise!

Gruß
Andreas


Vize

Hallo nochmal an alle,

und danke für die ganzen Tipps und Hinweise!

Der "einfachste" Weg mit Marios Vorschlag zu den numerischen Werten hat auf Anhieb funktioniert...

Schönes Wochenende schonmal!
Andreas