NEWS
Visualisierung mit Node Red erstellen
-
@mickym Habe ich
-
@damrak2022 Gut und oben in die Zeile werden wir nun unseren regulären Ausdruck schreiben. Um etwas zu extrahieren - müssen wir eine sogenannte Gruppe bilden.
In dem Feld rechts unten auf der Seite findest Du den sogenannten Code welche Zeichenfolge für welche Zeichen steht.
wie du siehst steht für ein beliebiges Zeichen ein Punkt:
-
@mickym Ja, den sehe ich
-
@damrak2022 sagte in Visualisierung mit Node Red erstellen:
@mickym Ja, den sehe ich
Wenn Du jetzt in Deinem regulären Ausdruck einen Punkt eingibst, dann siehst Du rechts in der Mitte wie oft das "matched".
-
@mickym Bis match 39 Praktisch für jedes Zeichen ein Match
Und 16 - 25 wollen wir haben. -
@damrak2022 Genau - weil ein Punkt für ein beliebiges Zeichen steht matched es 39 Mal - also für jedes Zeichen. Als erstes musst Du aber immer schauen (in unserem Fall jedenfalls), dass es erst mal nur ein Mal matched. Deswegen müssen wir unseren regulären Ausdruck dahingehend ändern, dass es alle Zeichen auf einmal matched.
Dafür gibt es sogenannte Quantifier. Das heisst wir geben an wieviel mal das beliebige Zeichen vorkommen kann.
Dabei steht der "Stern" dafür, dass es kein mal oder beliebig oft auftreten darf.
Wenn Du also hinter den "." einen Stern machst, dann wird plötzlich der gesamte String komplett als 1 match gezählt - weil wir sagen ein beliebiges Zeichen kann beliebig oft auftreten.
-
@mickym Sieht bei mir jetzt so aus:
-
@damrak2022 Ja wobei der Teststring eigentlich nun durchgehend blau sein sollte, weil es einmal matched.
Sollte eigentlich so aussehen Dein Teststring. Dein Bild schaut so aus, als ob es aus dem ersten Bild stammt.
-
@mickym Der ist durchgehend blau - hat wahrscheinlich mit dem haken meines Rechners zu tun
-
@damrak2022 Gut wunderbar. Das heisst es matched alles einmal, weil ein beliebiges Zeichen beliebig oft auftreten kann.
Nachdem Du vorher ja schon gesehen hast, dass das Topic genau 39 Zeichen hast. Wenn Du also mit einer genauen Anzahl Zeichen arbeiten willst kannst Du das machen, indem Du es in geschweifte Klammern eingibst.
Also immer das Zeichen das suchen und dann wie oft das vorkommt.
Wenn Du also
.*
eingibst, kann ein beliebiges Zeichen beliebig oft auftreten
wenn Du
.{39}
eingibst dann kann ein beliebiges Zeichen genau 39 mal auftreten.
Wenn Du
.{10}
eingibst, dann tritt ein beliebiges Zeichen genau 10 mal auf. Probier das mal aus, dann sollten nur die ersten 10 Zeichen markiert sein.
-
@mickym Aber warum bekomme ich jetzt 3 x 10 Zeichen?
-
Weil der String 3 mal matched - Zeichen 1-10, 11-20, 21-30
-
@mickym Okay, aber ich soll ja fragen: Ich hätte gedacht das mir jetzt nur einmal die ersten 10 Zeichen angezeigt werden. Warum matched das 3 mal
-
@damrak2022 Weil das ja beliebige Zeichen sind und es wird immer der komplette String durchsucht.
Es sieht also so aus und die Zeichen 31-39 fallen weg.
-
@mickym Okay
-
@damrak2022 sagte in Visualisierung mit Node Red erstellen:
@mickym Okay
Wenn Du nur die ersten 10 Zeichen haben willst, dann gibst Du einen sogenannten Anker an.
Wenn Du also ein dieses Dach vor Deinen regulären Ausdruck gibst, dann werden nur die ersten 10 Zeichen matchen, weil dann hast Du ja festgelegt, dass dieser Ausdruck nur für den Anfang des Strings gelten soll und nicht sonst wo im String.
Also teste mal:
^.{10}
-
@mickym Ja geht
-
@damrak2022 gut wir wollen aber unsere Kennung haben. Also lassen wir erst mal alles matchen und dann schauen wir ob es eine Zeichenfolge gibt, die immer gleich ist, um unsere Kennung zu extrahieren.
Also erst mal wieder
.*
-
@mickym erledigt
-
@damrak2022 So und was kommt den für Zeichen oder Zeichenketten vor der Kennung, die wir als Erkennungsmerkmal nutzen können, wo die Kennung beginnt.