Hauptmenü

DOIF Regex mit Capture Group

Begonnen von yogi, 11 Februar 2018, 21:14:35

Vorheriges Thema - Nächstes Thema

yogi

Hallo miteinander

ich versuche eine DOIF Definition zu machen, in der ein Dummy ein Wert bekommt, der einen Teil eines Readings beinhaltet. Mein Ansatz bis jetzt:

( [My_Calendar_View:t_001_summary] =~ "^(\\w+)\\s") (set a_dummy [$1]) DOELSE (set a_dummy "Nichts gefunden")

Die Regex funktioniert (mit \\w anstatt \w), aber ich habe nichts über Capture Groups gefunden in den Dokumenten, und weder $1, noch [$1] oder {$1} geht.

Kann mir da jemand weiterhelfen? Geht das überhaupt?

Herzlichen Dank.


Damian

Zitat von: yogi am 11 Februar 2018, 21:14:35
Hallo miteinander

ich versuche eine DOIF Definition zu machen, in der ein Dummy ein Wert bekommt, der einen Teil eines Readings beinhaltet. Mein Ansatz bis jetzt:

( [My_Calendar_View:t_001_summary] =~ "^(\\w+)\\s") (set a_dummy [$1]) DOELSE (set a_dummy "Nichts gefunden")

Die Regex funktioniert (mit \\w anstatt \w), aber ich habe nichts über Capture Groups gefunden in den Dokumenten, und weder $1, noch [$1] oder {$1} geht.

Kann mir da jemand weiterhelfen? Geht das überhaupt?

Herzlichen Dank.
Der Adressraum der Bedingung und des Ausführungsteils ist getrennt, daher ist $1 aus der Bedingung im Ausführungsteil nicht anwendbar.

Du könntest [My_Calendar_View:t_001_summary] im Ausführungsteil nochmal auswerten: set a_dummy {("[My_Calendar_View:t_001_summary]" =~ "^(\\w+)\\s";$1)}
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

yogi

Herzlichen Dank für die schnelle Antwort, das macht wohl auch Sinn.

Ich habe es jetzt so gelöst:
define My_Guest_DOIF DOIF
    ([My_Calendar_View:t_001_summary])
    (set My_Guest_Name [My_Calendar_View:t_001_summary:"^(\w+)":"$1"], set My_Guest_Reservation [My_Calendar_View:t_001_summary:"\(?(\w+)\)?$":"$1"])