FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: namor am 11 Dezember 2018, 21:24:50

Titel: [gelößt] Regex für Label
Beitrag von: namor am 11 Dezember 2018, 21:24:50
Ich glaube ich drehe durch oder doch zu blöd...

Ich möchte aus dem Modul Departure die Abfahrtszeit meiner Straßenbahn mit einem Regex extrahieren und in ein Label schreiben.

Das wäre das Reading:
departure_0_time_human_readable
11.12.2018, 20:12 Uhr


Ich brauche nur die Uhrzeit.
Habe folgendes Regex angewendet: data-part=".[\d+]:[\d+].*"

Im im Online Regex Tester(https://regex101.com/) gibt er mir das richtig zurück

Full match   12-21   `19:48 Uhr`

Soweit ich das verstehe.

Leider bleibt mein Label leer?

Kann mir da jemand auf die Sprünge helfen?

Gruß namor
Titel: Antw:Regex für Label
Beitrag von: amenomade am 12 Dezember 2018, 00:29:49
Du brauchst nicht nur ein "Match" sondern auch ein "Capturing Group"

data-part="(.[\d+]:[\d+].*)"
oder
data-part=",.([\d:]+).Uhr"
Guck mal den Unterschied mit regex101.com

Und wenn dein Reading wirklich auf 2 Zeilen ist, brauchst Du noch (?s) am Anfang der Regex dazu, also:data-part="(?s)(.[\d+]:[\d+].*)"
Titel: Antw:Regex für Label
Beitrag von: namor am 12 Dezember 2018, 20:14:43
@amenomade

Danke für Deine Hilfe.
Leider zeigt er mir nix an!
Lasse ich den data-part weg, zeigt er mir die ganze Zeile mit Datum, also sind die Daten generell mal da.
Das ist mein gesamtes div:
<div data-type="label" data-device="VAGDeparture" data-get="departure_0_time_human_readable" data-part="(.[\d+]:[\d+].*)" style="medium thin;color:#ace600; " class="medium thin right-align left-space"></div>

Auch Deine zweite Variante geht nicht.

Das Reading kommt in einer Zeile.

Was kann ich noch machen?

Gruß
Titel: Antw:Regex für Label
Beitrag von: namor am 12 Dezember 2018, 21:40:57
Ok,

habe es gelößt.
1. War ich im falschen Reading, mein gesuchtes Reading macht folgende Ausgabe:
2018-12-12T21:36+0100

Das erstellte Regex ist "(\d\d\:\d\d)" um nur die Uhrzeit 21:36 zu extrahieren.
Genau so eingetragen ins Label, ergibt KEINE AUSGABE!
Im Regex-Online passt das!

Ich habe folgende Bemerkung von @setstate aus 2016 gefunden:
"Eventuell noch ein .* davor und danach, weil automatisch ^ und $ verbaut ist."

Das hat mich auf die Schreibweise ".*(\d\d\:\d\d).*" gebracht.
Nun zeigt er meine Uhrzeit im Label wie gewünscht an.

Danke nochmal an @amenomade, Du hast mich durch Deine Antwort dazu gebracht nicht aufzugeben.