FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: juemuc am 24 Dezember 2022, 15:39:39

Titel: Variablen Wert aus String extrahieren
Beitrag von: juemuc am 24 Dezember 2022, 15:39:39
Hallo zusammen,
ich benötige kurz Eure Hilfe.
Wie kann ich aus dem String "1h: -0.4 2h: +0.5 3h: +0.5 6h: +0.0" den Wert nach 3h bzw den Wert nach 6h extrahieren. Mit "replace(/1h:\s+(.*?)\s+2h:.*/, '$1')" kann ich den Wert nach 1h: ermitteln. Beim Rest scheitere ich   :-[

Viele Grüße
Jürgen
Titel: Antw:Variablen Wert aus String extrahieren
Beitrag von: DeeSPe am 24 Dezember 2022, 16:06:21
Mit RegEx kein Problem.
{
  my $time = '1h: -0.4 2h: +0.5 3h: +0.5 6h: +0.0';
  my $time3h;
  my $time6h;
  if ($time =~ /^1h:.[+-]\d{1,2}\.\d.2h:.[+-]\d{1,2}\.\d.3h:.([+-]\d{1,2}\.\d).6h:.([+-]\d{1,2}\.\d)$/x)
  {
    $time3h = $1;
    $time6h = $2;
  }
}


Gruß
Dan
Titel: Antw:Variablen Wert aus String extrahieren
Beitrag von: TomLee am 24 Dezember 2022, 16:09:48
Alternativ:
Mit split (http://www.mathe2.uni-bayreuth.de/perl/GK/regExp.htm#splitundjoin) den String an den Leerzeichen zerlegen und in einer Arrayvariablen "festhalten".
Danach mit dem Zugriffsoperator (http://www.mathe2.uni-bayreuth.de/perl/GK/arrays.htm#Zugriffsoperator) auf die gewünschten Elemente zugreifen.
Titel: Antw:Variablen Wert aus String extrahieren
Beitrag von: betateilchen am 24 Dezember 2022, 19:33:19
Zitat von: DeeSPe am 24 Dezember 2022, 16:06:21
Mit RegEx kein Problem.

Der Sinn der if-Abfrage in Deinem Beispiel erschließt sich mir nicht?


sub test {
  my $time = '1h: -0.4 2h: +0.5 3h: +0.5 6h: +0.0';
  $time =~ /^1h:.[+-]\d{1,2}\.\d.2h:.[+-]\d{1,2}\.\d.3h:.([+-]\d{1,2}\.\d).6h:.([+-]\d{1,2}\.\d)$/x;
# return ($1,$2); # alternativ, wenn man nur die Rückgabewerte braucht
  my ($time3h,$time6h) = ($1, $2);
  return;
}
Titel: Antw:Variablen Wert aus String extrahieren
Beitrag von: DeeSPe am 24 Dezember 2022, 21:35:12
Zitat von: betateilchen am 24 Dezember 2022, 19:33:19
Der Sinn der if-Abfrage in Deinem Beispiel erschließt sich mir nicht?

Ich nutze dieses Konstrukt gern um dann evtl. in einem else-Zweig Ausgaben zu tätigen dass die Daten nicht im erwarteten Format bereit stehen.
Das ist aber natürlich für die Zuweisung nicht nötig.

Gruß
Dan
Titel: Antw:Variablen Wert aus String extrahieren
Beitrag von: betateilchen am 24 Dezember 2022, 22:15:41
Danke für die Erklärung.
Titel: Antw:Variablen Wert aus String extrahieren
Beitrag von: juemuc am 25 Dezember 2022, 13:34:23
Danke für Eure Tipps. Es gab unter FTUI3 mit dem Pipe-Befehl "part" noch eine elegantere Lösung.

Viele Grüße
Jürgen