Regex für Strumflut

Begonnen von Freibeuter, 05 Februar 2022, 03:46:07

Vorheriges Thema - Nächstes Thema

Freibeuter

Hallo zusammen,
seit Jahren lasse ich mich von der Seite
  https://www2.bsh.de/aktdat/wvd/ostsee/Ostsee.html
vor Sturmfluten warnen, mit einem ganz einfachen rergex:
(Sturmflut)
jetzt ist auf der Seite aber etwas auskommentiert
<!--
<span class="w3-btn w3-small w3-padding-small w3-light-gray w3-round-large">
<a class="blau_u" href="https://www.bsh.de/DE/THEMEN/Wasserstand_und_Gezeiten/Sturmfluten/_Anlagen/Downloads/Ostsee_Sturmflut_20220128-31.pdf" target="_blank">
Die letzte Sturmflut vom 28.-31.1.2022</a></span>
-->


Wie kann ich nach dem Wort Sturmflut suchen, außerhalb von <!--   --> ?
Vielen Dank


OdfFhem

@Freibeuter

Aktuell gibt es auf der verlinkten Seite nur die "geerdete" Sturmflut, daher ist der Aufbau der Seite bei Sturmflut-Warnung etwas unklar ...


Wenn man die Reihenfolge kennt, dann sollte eigentlich ein Ausdruck nach folgendem Muster ausreichen:

(Sturmflut).*Sturmflut

Sturmflut kommt mindestens zweimal vor; das erste Auftreten gewinnt ...

Sturmflut.*(Sturmflut)

Sturmflut kommt mindestens zweimal vor; das letzte Auftreten gewinnt ...


Wenn man die Reihenfolge nicht festlegen kann/will, könnte folgender Ausdruck helfen:

(Sturmflut).*(<!--).*Sturmflut.*?(-->)|(<!--).*Sturmflut.*?(-->).*(Sturmflut)


Zitatvorher   Sturmflut   xyz <!-- xyz --> <!-- xyz   Sturmflut   xyz --> <!-- xyz --> xyz   Sturmflut   nachher
--> findet erstes Vorkommen
Zitatvorher   Stuuuuurmflut   xyz <!-- xyz --> <!-- xyz   Sturmflut   xyz --> <!-- xyz --> xyz   Sturmflut   nachher
--> findet letztes Vorkommen
Zitatvorher   Stuuuuurmflut   xyz <!-- xyz --> <!-- xyz   Sturmflut   xyz --> <!-- xyz --> xyz   Stuuuuurmflut   nachher
--> findet nichts


Sollte die "geerdete" Sturmflut verschwinden, hilft (höchstwahrscheinlich) keiner der genannten Ausdrücke. Daher wäre vermutlich der genauere Aufbau der Seite im Falle der Sturmflut-Warnung zielführender ...

rudolfkoenig

Fuer einen sinnvollen Rat muesste man wissen, wie man an die Daten kommt (HTTPMOD, direktes HttpUtils_NonblockingGet, etc).
Je nach Methode kann man erst alle Kommentare entfernen mit <!--.*?-->, und danach nach den Daten suchen.

Beta-User

Oder nach "nicht vorher ein" "letzte"?

(?!letzte.)Sturmflut
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Freibeuter

Vielen Dank für die Antwort,
bei  Sturmflut sieht die Seite so aus:
http://web.archive.org/web/20220130085000/https://www2.bsh.de/aktdat/wvd/ostsee/Ostsee.html

Und genau wie Du sagst, die Warnung sollte auch kommen, wenn es den <!--  --> Hinweis nicht mehr gibt...

Freibeuter

mein Device sieht so aus:
defmod Pegel_Ostsee HTTPMOD https://www2.bsh.de/aktdat/wvd/ostsee/Ostsee.html 8000
attr Pegel_Ostsee userattr disable event-on-change-reading readingsRegex.* stateFormat verbose
attr Pegel_Ostsee alias Pegel_Ostsee
attr Pegel_Ostsee disable 0
attr Pegel_Ostsee enableControlSet 1
attr Pegel_Ostsee event-on-change-reading .*
attr Pegel_Ostsee event-on-update-reading Sturmflut
attr Pegel_Ostsee group 4 Pegel_Ostsee
attr Pegel_Ostsee reading01Name Pegel_aktuell_ab
attr Pegel_Ostsee reading01Regex Zeitraum.1.von.(.*)bis.*<br>
attr Pegel_Ostsee reading02Name Pegel_vorhersage_ab
attr Pegel_Ostsee reading02Regex Zeitraum.2.von.(.*)bis.*<br>
attr Pegel_Ostsee reading03Name Pegel_vorhersage_min
attr Pegel_Ostsee reading03Regex bereich2.zeit2..(.*).bis..*
attr Pegel_Ostsee reading04Name Pegel_vorhersage_max
attr Pegel_Ostsee reading04Regex bereich2.zeit2...*.bis.(.*)
attr Pegel_Ostsee reading05Name last_update
attr Pegel_Ostsee reading05Regex erstellt.am.(\d+.\d+.\d+..\d+:\d+).*Uhr
attr Pegel_Ostsee reading06Name Pegel_aktuell_max
attr Pegel_Ostsee reading06Regex bereich2.zeit1..(.*).bis..*
attr Pegel_Ostsee reading07Name Pegel_aktuell_min
attr Pegel_Ostsee reading07Regex bereich2.zeit1...*.bis.(.*)
attr Pegel_Ostsee reading08Name Warnung
attr Pegel_Ostsee reading08Regex (Warnung.*)\n
attr Pegel_Ostsee reading09Name Sturmflut
attr Pegel_Ostsee reading09Regex (Surmflut)
attr Pegel_Ostsee reading10Name Werte
attr Pegel_Ostsee reading10RegOpt g
attr Pegel_Ostsee reading10Regex (.\d+).\n
attr Pegel_Ostsee room 8_Wetter
attr Pegel_Ostsee stateFormat aktuell: Werte-5 später: Werte-15 morgen: Werte-25
attr Pegel_Ostsee verbose 0
attr Pegel_Ostsee webCmd reread

OdfFhem

@Freibeuter

Das folgende Attribut scheint falsch oder es handelt sich um einen Kopierfehler ... bei Surmflut fehlt ein t

attr Pegel_Ostsee reading09Regex (Surmflut)


Bei der Seite aus dem Archiv könnte/sollte schon folgender Ausdruck reichen ...

attr Pegel_Ostsee reading09Regex (Sturmflut)warnung


Freibeuter

Oh man ... das war ja einfach.
Vielen Dank!