[gelöst] Auswertung regulärer Ausdrücke in FHEM abweichend vom Standard?

Begonnen von Josch, 03 Februar 2021, 15:37:01

Vorheriges Thema - Nächstes Thema

Josch

Hallo zusammen,

ich habe mehrere Sensoren, die nach folgendem Schema benannt sind: <zwei Buchstaben>_THSen<Zahl>, also z.B. au_THSen1, au_THSen2, ga_THSen1 usw.
Nun möchte ich ein Notify schreiben, dass für alle Sensoren funktioniert, die "THSen" im Namen tragen. Als regulären Ausdruck kann man das z.B. so schreiben (getestet mit http://regexe.com):
(.{2})(_THSen.*)

Wenn ich diesen Ausdruck aber mit RegexpCheck im Web Frontend teste:
{ notifyRegexpCheck('(.{2})(_THSen.*)') }

erhalte ich
(.{2})(_THSen.*): no match (ignored)
d.h. meine Sensoren werden nicht gefunden. Ich habe schon alles mögliche probiert. Bei den Beispielen im Wiki gibt es leider nur die Fälle variabler Präfix oder variabler Suffix, aber nicht beides.
Was mache ich falsch? Warum verhält sich FHEM anders als der online-RegEx-Evaluator?

Für Tipps wäre ich sehr dankbar.
Josch

Beta-User

 :)
Der NOTIFYDEV-Parser ist etwas einfacher gestrickt und versteht nicht die volle "normale" Regex-Sprache, daher gibt es ja die Funktion zum Testen, ob eine devspec "gut verstanden" wird...

Man sollte tendenziell auf Klammern verzichten, das bringt den im Zweifel nur durcheinander. Was zeigt:{ notifyRegexpCheck('.._THSen.*') }
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Josch

Danke Beta-User,

das geht! Manchmal sieht man den Wald vor Bäumen nicht ::). Auf die Idee mit den zwei Punkten war ich nicht gekommen...

herrmannj

Dir Regex ist aber auch krude formuliert und <zwei Buchstaben>_TH_Sen<Zahl>, also z.B. au_THSen1 widerspricht sich weil nach TH der '_' fehlt oder zu viel ist.

'.._TH_Sen\d' matched 'AB_TH_Sen1'

.. überschnitten :)

Josch

Sorry,

der zweite Unterstrich im Schema ist ein Tippfehler. Wird korrigiert.