Regex Anfänge oder doch schon mehr?

Begonnen von NeuFehm, 21 Dezember 2015, 22:57:02

Vorheriges Thema - Nächstes Thema

NeuFehm

Ich habe ein  ECMDDevice über RS485....

Mit Hilfe eines klassischen FHEM-Schalters und der passenden Classdef, die definiert,
was an das Device gesendet werden soll, wenn man den FHEM-Schalter an oder ausschaltet,
funktioniert auch einwandfrei.
Nun möchte ich die Antwort des Relais auswerten.

Schalte ich nun auf der Weboberfläche mein Relais an,
so wird der passende Schaltbefehl der classdef zu meinem Relais geschickt:
#M(E\001\001\001\r\n
Darauf sendet das Relais die Antwort:
!M(E\001\001\001\r\n  (aus #.... wurde !.... was soviel heist... ok, ausgeführt)

Mein passendes und funktinierendes matching in der classdef sieht so aus:
reading on match "!M\(E\001\001\001\r\n"

Wenn ich das Ganze jedoch in einem Regex-Tester checke, müsste es so aussehen:
!M\(E\\001\\001\\000\\r\\n

Kann mir jemand erklären, warum das so ist oder ist das gar nicht so?

Auszug commandref zum Thema der readings:
reading <reading> match "<regex>"
Declares a new reading named <reading>. A spontaneous data transmission from the physical device that matches the Perl regular expression <regex> is evaluated to become the value of the named reading. All ECMDDevice devices belonging to the ECMD device with readings with matching regular expressions will receive an update of the said readings. <regex> must match the entire reply, as in m/^<regex>$/.
Raspberry Pi B+
RS 485 Schnittstellen: DIGITUS DA-70157, LINKSPTITE RS485/GPIO Shield for Raspberry Pi
RS485 Geräte: Ultraschallsensor für Zisternenfüllstand (Eigenbau), 4x8 Relais-M-Mastermodule (Eigenbau), 6 T-Module (Schalter und 3 analoge Eingänge) (Eigenbau)
sonstige Hardware: 2 Relay Modul

franky08

Durch die // sind die / maskiert, ob das gebraucht wird kannst du nur austesten, bei den online regex testern kommt manchmal auch ein Ergebnis zu stande was in fhem nicht unbedingt stimmen muss.

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

NeuFehm

Hallo Frank, darum verstehe ich ja nicht, warum man bei /001 den "Schutz" weglassen kann, aber bei ( nicht.
Wie testet Ihr die regex? Aus was sollte man bei online-testern achten?
Raspberry Pi B+
RS 485 Schnittstellen: DIGITUS DA-70157, LINKSPTITE RS485/GPIO Shield for Raspberry Pi
RS485 Geräte: Ultraschallsensor für Zisternenfüllstand (Eigenbau), 4x8 Relais-M-Mastermodule (Eigenbau), 6 T-Module (Schalter und 3 analoge Eingänge) (Eigenbau)
sonstige Hardware: 2 Relay Modul