FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: FHEm2005 am 03 Januar 2018, 10:52:29

Titel: [gelöst] HTTPMOD - Reihenfolge bei Mehrfachvorkommen
Beitrag von: FHEm2005 am 03 Januar 2018, 10:52:29
Mit dem Modul  HTTPMOD möchte ich ein Containerschiff monitoren. Die erforderlichen daten werden in userReadings geschrieben und in einem Log gesammelt.  Dazu benötige ich den Abfahrtshafen und den Zielhafen. Die dazugehörenden Elemente kommen zweimal vor.

Internetseite:
<span class="text-default text-darker">BRV</span> (Abfahrtshafen) und wenig später:
<span class="text-default text-darker">WHV</span> (Zielhafen)

Dankenswerterweise kommt die Klasse nur die beiden oberen Male vor. Die Regex
<span class="text-default text-darker">([A-Z]{3})</span>
liefert mir die Kennung des ersten Vorkommens, also Abfahrtshafen BRV.

Nun die Frage: Wie kommen ich an das zweite Vorkommen heran? Kömme ich überhaupt an das 2. Element ran?

Viele Grüße
Eberhard
Titel: Antw:HTTPMOD - Reihenfolge bei Mehrfachvorkommen
Beitrag von: mahowi am 03 Januar 2018, 11:52:56
Den Regex ausweiten, bis die beiden Angaben unterscheidbar sind. Ich nehme an, im Kontext wird noch irgendwas vorkommen, was zur Unterscheidung beiträgt.
Titel: Antw:HTTPMOD - Reihenfolge bei Mehrfachvorkommen
Beitrag von: KernSani am 03 Januar 2018, 12:14:55
Ich nicht sehr erfahren mit HTTPMOD, aber sollte nicht ein /g modifier in einer RegEx alle vorkommen liefern?


Grüße,


Oli
Titel: Antw:HTTPMOD - Reihenfolge bei Mehrfachvorkommen
Beitrag von: FHEm2005 am 03 Januar 2018, 12:34:32
Ich habe auf mahowi gehört und mir die Umgebung der beiden Vorkommen nochmal genau angesehen. Das zweite Vorkommen hatte noch einige Whitespaces. Diese waren letztendlich das notwendige Unterscheidungsmerkmal.

Hier die Lösung (die whitespaces sind fett):

<span class="text-default">([A-Z]{2})</span><span class="text-default text-darker">[A-Z]{3}</span></a>  /Das Abfahrtsland = 2 Großbuchstaben
<span class="text-default">[A-Z]{2}</span><span class="text-default text-darker">([A-Z]{3})</span></a>  /Der Abfahrtshafen = 3 Großbuchstaben

<span class="text-default">([A-Z]{2})</span><span class="text-default text-darker">[A-Z]{3}</span>\s+</a>  /Das Zielland = 2 Großbuchstaben
<span class="text-default">[A-Z]{2}</span><span class="text-default text-darker">([A-Z]{3})</span>\s+</a>  /Der Zielhafen = 3 Großbuchstaben

Danke an euch Beiden.

Gruß Eberhard