FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: yogi am 11 Februar 2018, 21:14:35

Titel: DOIF Regex mit Capture Group
Beitrag 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.

Titel: Antw:DOIF Regex mit Capture Group
Beitrag von: Damian am 11 Februar 2018, 21:21:10
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)}
Titel: Antw:DOIF Regex mit Capture Group
Beitrag von: yogi am 11 Februar 2018, 22:18:21
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"])