[gelößt] Regex für Label

Begonnen von namor, 11 Dezember 2018, 21:24:50

Vorheriges Thema - Nächstes Thema

namor

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

amenomade

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+].*)"
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

namor

@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ß

namor

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.