Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. [gelöst] Parser und Umlaute

    NEWS

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    [gelöst] Parser und Umlaute

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      tom_33 last edited by tom_33

      Hallo Forum!

      Ich lese mit dem Adapter Parser (1.0.7) verschiedene Parameter einer Wetterseite aus.
      Bei der Windrichtung kommt natürlich auch ab und zu "Süd" vor. Der Parser hat hier leider Schwierigkeiten mit dem Umlaut.
      Mit regex101.com kann ich aber die Windrichtung korrekt mit Umlaut "ü" auslesen.
      Wenn ich aber dann die Abfrage vom regex101 in die Parser-Instanz eintrage,
      liest er mir anstatt Süd, 8 km/h nur d, 8 km/h aus.

      Die Webseite: https://wetter.orf.at/tirol/innsbruck/
      Der Ausdruck: \p{L}+,\ \d+(?= <abbr title="Kilometer pro Stunde">km/h</abbr>)

      Laut regex101 liest \p{L} jeden Buchstaben jeder Sprache aus (macht er ja auch)
      \p{L} matches any kind of letter from any language

      Nur der Parser streikt hier. Bis jetzt sind alle Anfragen/Schilderungen zu diesem Thema mehr oder weniger im Sand verlaufen. Hat vielleicht jemand ein Lösung dazu?

      sg tom

      Homoran 1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @tom_33 last edited by Homoran

        @tom_33 sagte in Parser und Umlaute:

        \p{L} jeden Buchstaben jeder Sprache aus

        \p{...}
        Matches a unicode character with the given group of properties or categories:
        http://www.fileformat.info/info/unicode/category/index.htm
        http://www.regular-expressions.info/unicode.html#category
        /\p{Armenian}+/
        զվարճանք is the word "fun" in Armenian

        Die Form {L} habe ich nicht gefunden, da muss laut Beispiel anscheinend die gewünschte Sprache rein, hier also vielleicht German?

        Versuch mal Wind<[^\:]+[^>]+[^\w]+(.+), Num = 0

        T 1 Reply Last reply Reply Quote 0
        • T
          tom_33 @Homoran last edited by tom_33

          @homoran sagte in Parser und Umlaute:

          Wind<[^:]+[^>]+[^\w]+(.+),

          Uff, den Ausdruck muss ich erst zerlegen. Aber mit dem komme ich meinem Ziel schon näher. Sobald ich das geschafft habe, melde ich mich wieder.

          Danke für die Links von den Codes
          Ich denke, \p{L} steht für Letter. German nützt leider nichts.

          Vorerst mal besten Dank.

          Homoran 1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @tom_33 last edited by

            @tom_33 sagte in Parser und Umlaute:

            Ich denke, \p{L} steht für Letter.

            eher für Language

            @tom_33 sagte in Parser und Umlaute:

            den Ausdruck muss ich erst zerlegen

            guten Appetit 😉

            bei Fragen - fragen!

            T 1 Reply Last reply Reply Quote 1
            • T
              tom_33 @Homoran last edited by

              @homoran sagte in Parser und Umlaute:

              guten Appetit

              Ich verdaue (verstehe) es nur Ansatzweise, aber es funktioniert 😀.
              Ich frage nun Windrichtung und Geschwindigkeit seperat ab und füge sie in meinem Vis wieder zusammen.

              Besten Dank für die schnelle Hilfe!

              Homoran 1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @tom_33 last edited by Homoran

                @tom_33 sagte in Parser und Umlaute:

                aber es funktioniert

                natürlich 😆

                @tom_33 sagte in Parser und Umlaute:

                Ich verdaue (verstehe) es nur Ansatzweise

                du suchst einen möglichst eindeutige Stelle (Wind<) so dicht wie möglich an dem gewünschten Wert (String)
                Dann arbeitest du dich weiter mit Platzhaltern an die Stelle heran.
                Da der Parser nicht mit \n umgehen kann wird es leider etwas umständlicher:
                beliebig viele Zeichen bis zum nächsten Doppelpunkt [^:]+
                beliebig viele Zeichen bis zur nächsten schließenden spitzen Klammer [^:]+
                beliebig viele Zeichen bis zum nächsten Buchstaben [^\w]+
                Dann die gesuchte Gruppe bestehend aus einer beliebigen Anzahl von beliebigen Zeichen, beendet mit einem Komma (.+),

                1 Reply Last reply Reply Quote 0
                • T
                  tom_33 last edited by

                  @homoran sagte in Parser und Umlaute:

                  So aufgedröselt und fein erklärt gehts ja, aber selbst auszudenken - da ist bei mir schon lange Schluss 😂
                  Ein bisschen verwirrend ist, dass regex101 nicht die gleichen Resultate liefert.

                  und zuletzt bestimmt die 0 (null) keine weiteren Zeichen mehr auszugeben?

                  Homoran OliverIO 2 Replies Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators @tom_33 last edited by

                    @tom_33 sagte in Parser und Umlaute:

                    Ein bisschen verwirrend ist, dass regex101 nicht die gleichen Resultate liefert.

                    Bei mir schon. (Ich nutze ja auch nur dokumentierte Befehle 😉 )
                    Hast du auch auf Javascript eingestellt?

                    @tom_33 sagte in Parser und Umlaute:

                    und zuletzt bestimmt die 0 (null) keine weiteren Zeichen mehr auszugeben?

                    ????

                    erst einmal ist 0 nicht null
                    und zweitens weiß ich nicht was du meinst.

                    Der RegEx enthält eine Gruppe, die das Ergebnis bereitstellt
                    Die Kunst liegt darin, diesen RegEx eindeutig zu machen

                    T 1 Reply Last reply Reply Quote 0
                    • T
                      tom_33 @Homoran last edited by tom_33

                      @homoran sagte in Parser und Umlaute:

                      Hast du auch auf Javascript eingestellt?

                      natürlich nicht! Mein Fehler!

                      und zweitens weiß ich nicht was du meinst.
                      Versuch mal Wind<[^:]+[^>]+[^\w]+(.+), Num = 0

                      ohne "0" bekomme ich das Ergebnis:

                      87f006fc-1973-498b-8e0d-a7962eaf0df6-grafik.png

                      mit "0" dieses (so wie ich es möchte):

                      0ce30aa8-53b5-46cb-a204-79d70802b987-grafik.png

                      Homoran 1 Reply Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators @tom_33 last edited by

                        @tom_33 sagte in Parser und Umlaute:

                        ohne "0" bekomme ich das Ergebnis:

                        Sollte aber nicht.
                        kann sein, dass das > escaped werden muss \>

                        T 1 Reply Last reply Reply Quote 0
                        • T
                          tom_33 @Homoran last edited by tom_33

                          @homoran
                          Mir ist erst bei den Screenshots aufgefallen, dass das Dropdownfeld Num = 0 gemeint ist. Sorry!

                          Ein escape bringt leider keine Änderung.

                          Mein Irrtum bringt das gewünschte Ergebnis 🤔

                          Homoran 1 Reply Last reply Reply Quote 0
                          • Homoran
                            Homoran Global Moderator Administrators @tom_33 last edited by Homoran

                            @tom_33 sagte in Parser und Umlaute:

                            ir ist erst bei den Screenshots aufgefallen, dass das Dropdownfeld Num = 0 gemeint ist. Sorry!

                            😁

                            @tom_33 sagte in Parser und Umlaute:

                            Ein escape bringt leider keine Änderung.

                            Hab es jetzt erkannt (Windstill ist die Himmelsrichtung) Da muss ich nochmal ran,
                            Hab leider gerade alles zu gemacht 😞

                            Edit:
                            versuch mal: Wind<[^:]+[^>]+[^\w]+([\w,ü]+),

                            T 1 Reply Last reply Reply Quote 0
                            • T
                              tom_33 @Homoran last edited by

                              @homoran sagte in Parser und Umlaute:

                              Wind<[^:]+[^>]+[^\w]+([\w,ü]+),

                              Bingo!

                              Eine Spende ist inzwischen an die GmbH gegangen.
                              Vielen, vielen Dank
                              sg tom

                              Homoran 1 Reply Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators @tom_33 last edited by Homoran

                                @tom_33 sagte in Parser und Umlaute:

                                Bingo!

                                und nimm das Komma wieder in den [ ] raus 😉
                                das hat sich dahin verirrt

                                korrekt:
                                Wind<[^:]+[^>]+[^\w]+([\wü]+),

                                1 Reply Last reply Reply Quote 1
                                • OliverIO
                                  OliverIO @tom_33 last edited by OliverIO

                                  @tom_33 sagte in Parser und Umlaute:

                                  @homoran sagte in Parser und Umlaute:

                                  So aufgedröselt und fein erklärt gehts ja, aber selbst auszudenken - da ist bei mir schon lange Schluss 😂
                                  Ein bisschen verwirrend ist, dass regex101 nicht die gleichen Resultate liefert.

                                  und zuletzt bestimmt die 0 (null) keine weiteren Zeichen mehr auszugeben?

                                  Regex liefert eigentlich schon die gleichen Ergebnisse. Nur sind die voreingestellten Optionen bei regex101 andere wie beim parser

                                  Regex101 = gm
                                  Parser = si

                                  Wenn man in regex 101 si als Optionen auswählt dann kommt man dem parser Verhalten näher.
                                  Ich hatte mal in den source reingeschaut, aber unter bestimmten Umständen ändert er die Optionen wieder

                                  Ok Korrektur, hab gerade mal in den source geschaut.
                                  Wenn eine item Nummer angegeben wurde dann Option g
                                  Wenn item Nummer nicht angegeben, dann keine Option.
                                  Dafür werden aber generell alle Zeilenumbrüche vor dem parsen in Leerzeichen umgewandelt.

                                  Homoran 1 Reply Last reply Reply Quote 0
                                  • Homoran
                                    Homoran Global Moderator Administrators @OliverIO last edited by Homoran

                                    @oliverio sagte in Parser und Umlaute:

                                    Nur sind die voreingestellten Optionen bei regex101 andere wie beim parser
                                    Regex101 = gm
                                    Parser = si

                                    ja, aber was ist si, ich habe auf gs gestellt.
                                    \n kann der Parser z.B. nicht
                                    $ anscheinend auch nicht

                                    gefährlich ist aber, wenn man die Voreinstellung nicht auf javascript ändert

                                    OliverIO 1 Reply Last reply Reply Quote 0
                                    • OliverIO
                                      OliverIO @Homoran last edited by OliverIO

                                      @homoran sagte in Parser und Umlaute:

                                      @oliverio sagte in Parser und Umlaute:

                                      Nur sind die voreingestellten Optionen bei regex101 andere wie beim parser
                                      Regex101 = gm
                                      Parser = si

                                      ja, aber was ist si, ich habe auf gs gestellt.
                                      \n kann der Parser z.B. nicht
                                      $ anscheinend auch nicht

                                      gefährlich ist aber, wenn man die Voreinstellung nicht auf javascript ändert

                                      Siebe mein angepasster Post oben.

                                      Zeilen Anfang ^ und Zeitenende $ gibt es halt dann nur ein einziges Mal. Nämlich am Anfang der Datei und am Ende der Datei, da alles dann nur noch aus einer Zeile besteht.

                                      Ich fände es schön wenn der parser Adapter oder parser2? Adapter genau so wie regex101 funktionieren würde und man nur noch den regex String und Optionen übernehmen müsste.

                                      g heißt global Match und gibt alle gefundenen Ergebnisse und nicht nur das erste zurück.
                                      i ist case insensitive also keine Unterscheidung von gross und Kleinbuchstaben
                                      s steht für single line , dass heist Zeilenumbrüche werden herausgefiltert (und nicht mit einem Leerzeichen ersetzt wie im parser Adapter)

                                      Homoran 1 Reply Last reply Reply Quote 0
                                      • Homoran
                                        Homoran Global Moderator Administrators @OliverIO last edited by Homoran

                                        @oliverio sagte in Parser und Umlaute:

                                        Ich fände es schön wenn der parser Adapter oder parser2? Adapter genau so wie regex101 funktionieren würde und man nur noch den regex String und Optionen übernehmen müsste.

                                        👍

                                        und wenn man dann in parser3 noch (optional) einen Browser-Header und Credentials mitgeben könnte wäre das die Kirsche auf der Sahne

                                        @oliverio sagte in Parser und Umlaute:

                                        i ist case insensitive also keine Unterscheidung von gross und Kleinbuchstaben

                                        heisst das, dass der Parser case insensitiv arbeitet?
                                        Das wärte natüerlich wichtig zu wissen

                                        OliverIO 1 Reply Last reply Reply Quote 0
                                        • OliverIO
                                          OliverIO @Homoran last edited by

                                          @homoran
                                          Nein nicht case insensitive.
                                          Option I ist nicht angegeben.
                                          Wobei da etwas vorgesehen ist was aber wohl nicht von der Oberfläche aus angesprochen wird

                                          Wenn im jeweiligen datenpunkt eines oder mehrere der folgenden Schlüsselworte mit angegeben ist, dann werden diese Optionen verwendet.
                                          https://github.com/ioBroker/ioBroker.parser/blob/e34122ce3aee43c24c44fe3b9375b07a49c551d0/main.js#L148

                                          Das kann man aber nur im raw Modus auf dem datenpunkt direkt pflegen.

                                          1 Reply Last reply Reply Quote 0
                                          • First post
                                            Last post

                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          644
                                          Online

                                          32.1k
                                          Users

                                          80.6k
                                          Topics

                                          1.3m
                                          Posts

                                          3
                                          19
                                          818
                                          Loading More Posts
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          The ioBroker Community 2014-2023
                                          logo