Hallo,
versuche gerade ein data-part aus einem reading zu schneiden.
Reading ist
Total: 5633250 MB, Used: 5054605 MB, 95 %, Available: 292471 MB at /Daten
<div data-type="label" data-device="sysmon" data-get="Daten" data-part="((\d{1,3}) \%)\g{2}" >Regex</div>
<div data-type="label" data-device="sysmon" data-get="Daten" data-part="((\d{1,3}) \%)\2" >Regex</div>
Beide Versionen funktionieren nicht. Jemand einen Tip?
Gruß
Eisix
Was willst du bekommen? Die 95?
",\s(\d+)\s%"
Eventuell noch ein .* davor und danach, weil automatisch ^ und $ verbaut ist.
".*,\s(\d+)\s%.*"
Ja die 95,
.*,\s(\d+)\s%.*
funktioniert.
Irgendwie steige ich bei den Regex in Kombination mit Fhem nicht durch :(
Danke!
Gruß
Eisix
Schön, dass es klappt.
Man kann mit data-unit oder data-post-text das % wieder anhängen, wenn man es möchte.
Hallo,
wäre
data-part=".*,\s(\d{1,3})\s%.*"
nicht besser?
Basierend darauf
ram Total: 3943.43 MB, Used: 1092.98 MB, 27.72 %, Free: 2850.45 MB
swap Total: 8188.00 MB, Used: 1176.95 MB, 14.37 %, Free: 7011.05 MB
<div class="inline">
<div data-type="knob"
data-device="sysmon"
data-get="ram"
data-anglearc="360"
data-angleoffset="0"
data-part=".*,\s(\d{1,3}.\d\d)\s%.*"
data-min="0"
data-max="100"
data-bgcolor="green"
data-fgcolor="#FA2828"
class="mini readonly"
data-unit="%"
></div>
<div data-type="label">ram</div>
</div>
<div class="inline">
<div data-type="knob"
data-device="sysmon"
data-get="swap"
data-anglearc="360"
data-angleoffset="0"
data-part=".*,\s(\d{1,3}.\d\d)\s%.*"
data-min="0"
data-max="100"
data-bgcolor="green"
data-fgcolor="#FA2828"
class="mini readonly"
data-unit="%"
></div>
<div data-type="label">swap</div>
</div>
Ram geht swap nicht >:(
Jemand eine Idee?
Danke schon mal.
Eisix
Hallo Zusammen,
ich muss mich mal hier dran hängen, da mich die regex auch so langsam zur Verzweiflung bringen bzw. die Syntax in bestimmeten Kombinationen der Anwendung...:-(
Hier mal der Wert des REadings das ich als Label darstellen möchte.
24.7�C (Volt)
Versucht habe ich es folgendermaßen..
data-part="$val=~s/([\d.]*).*/$1/"
Das Label bleibt natürlich leer. Wäre klasse wenn mir da einer auf die Sprünge helfen kann.
Gruß
Markus
Wenn du data-part ganz weglässt, steht aber das kpl. Reading im Label?
und was ist mit data-part="1"
Warum nicht einfach data-part="7"?
Bei mir funktioniert es einwandfrei bei exakt der Aufgabe des TE! (% Belegung Ram von Sysmon).
Im Default separieren Leerzeichen die data-parts. Einfach abzählen, fertig.
Somit im letzten Beispiel data-part="1"
Grtz
CmdA
ja das Label wird angezeigt wenn ich es ohne data-part mache. Aus irgendeinem Grund bringt aber das reading keine Daten aber STATE liefert den String mit dem Wert. Dieser sieht aber folgendermaßen aus....
V: 24.8�C
Gruß
Markus
ich habs jetzt mal so gemacht..
data-part="...([\d.]*).*"
So funktioniert es nun, aber geht das noch einfacher?
Gruß
Markus
EDIT:... Was ich festgestellt habe ist, wenn man die Seite auf FTUI öffnet es eine Zeit dauert bis Daten in diesem Label angezeigt werden. Als wenn es nur mit der nächsten Datenänderung des Readings angezeigt wird. Eventuellhat da noch jemand eine Idee...?
Ich grabe das hier mal wieder aus, irgendwie scheine ich nicht genug begabt zu sein um Regular Expressions zu erstellen und zu verstehen.:-(
Ich würde das ja gerne mal verstehen, aber irgendwie funktionieren regex, die im Regextester (http://"http://chris.photobooks.com/regex/") funktionieren, in ftui nicht.:-/
Folgenden String möchte ich zerlegen:
|/dev/sda|Hitachi HDS723020BLA642|
Im regex Tester habe ich dieses regex getestet:
\|(.*?)\|
Es wird mir dann auch das erwartete Ergebnis angezeigt:
|/dev/sda|
bzw.
/dev/sda
Gebe ich diesen regex jetzt aber beim Labelwidget in data-part an, wird gar nichts ausgegeben, was mache ich da falsch?
gm
der Ausdruck verhält sich greedy (trotz des extra ? nach dem *). Es wir also alles zwischen dem ersten und letzten | gezogen.
Man könnte es dahin gehend ändern, dass man sagt: nach dem | muss noch irgend etwas folgen .+
data-part="\|(.+)\|.+"
Zitatder Ausdruck verhält sich greedy
Sorry für die Frage, ich bin immer noch Regexanfänger :-[, aber was bedeutet das?
Zitatdata-part="\|(.+)\|.+"
Wenn ich das eingebe bekomme ich den kompletten Ausdruck angezeigt.:-(
O.K, ich beantworte mich mal selber, greedy weiß ich jetzt.
Und wenn ich data-part="\|(.+?)\|"
so abändere, dann bekomme ich /dev/sda angezeigt.
Jetzt frickele ich gerade daran herum den zweiten Teil des Ausdrucks herauszuschneiden.
Könnte man einen regex erzeugen, der das dann so ausgibt?
/dev/sda Hitachi HDS723020BLA642
Oder muß man mehrere <div> erzeugen, mit entsprechenden data-parts und diese dann zusammenbauen?
Meine Fragen klingen für die regex Profis wahrscheinlich doof, aber ich versuche jetzt seit geraumer Zeit regex zu verstehen, aber es ist immer noch ein Buch mit sechs Siegeln... :-[ :-\