FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: holle75 am 30 September 2017, 13:22:35

Titel: RegEx alternation cmd_1|cmd_1_1
Beitrag von: holle75 am 30 September 2017, 13:22:35
Grrrrrr, also dieses Regex .....

<div data-template="template_setting_doif.html" data-parameter='{"var_DOIF":"PozzoHauptOben_PUMPE_PozzoDOIF","var_icon":"mi-settings_input_antenna","var_name":"Brunnenpumpe","var_description":"Mittags und bei Beregnung an","var_state_enabled":"enabled|initialize|initialized|cmd_1|cmd_1_2|cmd_3|cmd_4|cmd_5","var_state_disabled":"disabled","var_state_active":"cmd_1_1|cmd_2","var_state_extra":""}'></div>

das erste "cmd_1" im "var_state_enabled" wird ausgesucht auch wenn der state "cmd_1_1" ist und "var_state_active" greifen sollte.

Wie muß die Regex aussehen?

Ich weiß noch nicht mal, wie ich dieses Problem ordentlich beschreiben soll   :-\

Danke für eure Hilfe
Titel: Antw:RegEx alternation cmd_1|cmd_1_1
Beitrag von: holle75 am 30 September 2017, 15:42:53
verkürzt:

"var_state_enabled":"^(enabled|initialize|initialized|cmd_1|cmd_1_2|cmd_3|cmd_4|cmd_5)$","var_state_disabled":"disabled","var_state_active":"^(cmd_1_1|cmd_2)$","var_state_extra":""

scheint zu funktionieren ..... noch nicht ganz fertig getestet.

Falls jemand Anmerkungen zum Verständnis hat, gerne her damit ..... RegEx Logik generell, fällt mir schwer nachzuvollziehen.
Titel: Antw:RegEx alternation cmd_1|cmd_1_1
Beitrag von: Standarduser am 30 September 2017, 17:47:59
Zitat von: holle75 am 30 September 2017, 15:42:53
Falls jemand Anmerkungen zum Verständnis hat, gerne her damit ..... RegEx Logik generell, fällt mir schwer nachzuvollziehen.

^markiert den Anfang eines Strings
$ markiert das Ende eines Strings

Wenn Du damit Deine Zeichenkette "einrahmst" wird immer der gesamte Inhalt des Readings verglichen. Wenn etwas vor oder hinter dem gesuchten Ausdruck steht, trifft die Bedingung also nicht mehr zu.

Bei einer Abfrage auf true/false matcht die RegEx cmd_1:
"a_cmd_1", "cmd_1", "aaa cmd_1 bbb", "cmd_1_1"

Die RegEx ^cmd_1$ matcht nur noch:
"cmd_1"
Titel: Antw:RegEx alternation cmd_1|cmd_1_1
Beitrag von: holle75 am 30 September 2017, 17:59:09
danke dir! Dann machts Sinn, dass es funktioniert ;)