[gelöst] HTTPMOD Regex für finanzen.net: kein match, obwohl reg101 matched

Begonnen von FhemPiUser, 18 März 2023, 11:18:17

Vorheriges Thema - Nächstes Thema

FhemPiUser

Hi,

ich versuche per HTTPMOD den DAX in Punkten (PKT) und die Veränderung in % auf finanzen.net (https://www.finanzen.net/index/dax/charttool) auszuwerten.

Die PKT klappen, leider matched die reading02Regex "(([+-]?\d+\,\d+)$\s.*\s.*\%)" für die Auslesung der Veränderung in % laut verbose-Log nicht, obwohl die Regex in Regex101.com funktioniert und matched.

Jemand eine Idee woran das liegen kann?

Anbei meine Konfig:


defmod httpmod_finanzen_dax HTTPMOD https://www.finanzen.net/index/dax/charttool 900
attr httpmod_finanzen_dax enableCookies 0
attr httpmod_finanzen_dax event-on-change-reading dax
attr httpmod_finanzen_dax reading01Name dax
attr httpmod_finanzen_dax reading01OExpr $val =~ s/\.//g;; $val =~ s/\,/./g;; $val  ## 1.) Entfernung des Tausendertrennzeichens, 2.) Umwandlung des Dezimalkommas in Dezimalpunkt
attr httpmod_finanzen_dax reading01Regex (\d+\.\d+\,\d+).*
attr httpmod_finanzen_dax reading02Name dax_perc
attr httpmod_finanzen_dax reading02OExpr $val =~ s/\,/./g;;;; $val =~ s/\+//g;;;;  $val  ## Umwandlung des Dezimalkommas in Dezimalpunkt
attr httpmod_finanzen_dax reading02Regex ([+-]?\d+\,\d+)$\s.*\s.*\%
attr httpmod_finanzen_dax requestHeader User-Agent: Wget/1.20.1 (linux-gnueabihf)



DeeSPe

Zitatattr httpmod_finanzen_dax reading02Regex ([+-]?\d+\,\d+)$\s.*\s.*\%
Das Dollarzeichen ist dort auf jeden Fall fehl am Platz.
Wenn man das herausnimmt gibt es sicherlich ein Match.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

FhemPiUser

#2
danke, aber leider weiterhin kein match:


2023.03.18 11:40:49.474 5: httpmod_finanzen_dax: ExtractReading dax_perc with regex (?^m:([+-]?\d+\,\d+)\s.*\s.*\%) and options gm ...
2023.03.18 11:40:49.691 5: httpmod_finanzen_dax: ExtractReading dax_perc did not match


Auch nicht wenn ich noch gm als RegOpts hinzugefügt habe:


attr httpmod_finanzen_dax reading02RegOpt gm



Aber was ich nicht verstehe: Warum matched dann reg101.com mit der gleichen RegEx (siehe https://regex101.com/r/rPiiQ9/1)?





DeeSPe

Evtl. liegt es noch an den Escapes von , und % ?
Soweit ich weiß müssen diese nicht escaped werden, oder haben die eine spezielle Bedeutung in RegEx?

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

FhemPiUser


TomLee

Ob jetzt fachmännisch gelöst bezweifel ich, aber es tut und es gibt jeweils nur ein Match, keine zwei:

defmod httpmod_finanzen_dax HTTPMOD https://www.finanzen.net/index/dax/charttool 900
attr httpmod_finanzen_dax enableCookies 0
attr httpmod_finanzen_dax event-on-change-reading dax
attr httpmod_finanzen_dax reading01Name dax
attr httpmod_finanzen_dax reading01OExpr $val =~ s/\.//g;; $val =~ s/\,/./g;; $val  ## 1.) Entfernung des Tausendertrennzeichens, 2.) Umwandlung des Dezimalkommas in Dezimalpunkt
attr httpmod_finanzen_dax reading01Regex snapshot-value-fst-current-0[\w\W\n]*?(\d+\.\d+\,\d+)
attr httpmod_finanzen_dax reading02Name dax_perc
attr httpmod_finanzen_dax reading02OExpr $val =~ s/\,/./g;; $val =~ s/\+//g;;  $val  ## Umwandlung des Dezimalkommas in Dezimalpunkt
attr httpmod_finanzen_dax reading02Regex snapshot-value-fst-absolute-0[\w\W\n]*?(\d+\,\d+)
attr httpmod_finanzen_dax requestHeader User-Agent: Wget/1.20.1 (linux-gnueabihf)

setstate httpmod_finanzen_dax 2023-03-18 13:54:27 dax 14762.67
setstate httpmod_finanzen_dax 2023-03-18 13:54:27 dax_perc 204.43

FhemPiUser

Ahh, vielen Dank!

Etwas angepasst, aber die Regex "snapshot-value-fst-relative-0[\w\W\n]*?([+-]?\d+\,\d+)" funktioniert!