Skip to content
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Frage zu RegEx am Beispiel von Pix

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.2k

Frage zu RegEx am Beispiel von Pix

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
17 Beiträge 3 Kommentatoren 1.2k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • T Offline
    T Offline
    tempestas
    schrieb am zuletzt editiert von
    #1

    Liebe Leute,

    ich versuche gerade, das Thema Regular Expressions zu durchdringen und bin dabei nur mittel erfolgreich.

    An diesem Beispiel von Pix habe ich mir bislang folgendes erarbeitet:

    // sonos.0.root.XXX_XXX_XXX_XXX.volume

    var regex_vol = /^sonos.[0-9].root.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)_(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).volume$/;

    Ich verstehe, dass hier quasi alle möglichen Kombinationen von Sonos Instanzen durchgeprüft werden hinsichtlich volume. Ich wäre dankbar, wenn jemand meine Erkenntnisse zu den einzelnen Bereichen bestätigen oder falsifizieren könnte:

    /^sonos –-> / leitet RegEx ein, ^ bedeuted “Start des Strings”

    . –-> Backslash bedeuted, dass das Folgende, hier der Punkt, genau als das Zeichen gemeint ist.

    [0-9] –-> Character von 0 -9, hier wg. Sonos Instanz (falls mehrere vorhanden)

    .root. –-> Punkte sind als Punkte gemeint, dazu root. Ergebnis bisher: sonos.0.root. [oder sonos.1.root. oder .2.root. usw]

    Jetzt kommt die IP, hier werde ich unsicher:

    (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)

    Klammern () –-> alles darin eingeschlossene abgreifen, "ein Block".

    25[0-5] –-> 250 bis 255 als Startteil der Sonos IP

    | –-> "oder"

    2[0-4][0-9] –-> 200 bis 249

    | –-> "oder"

    [01]? –-> 0 ODER 1 <u>kann</u> enthalten sein, <u>muss aber nicht</u>

    [0-9] –-> Zahl von 0 -9

    [0-9]? –-> Zahl von 0 -9 <u>kann</u> enthalten sein, <u>muss aber nicht</u>

    Bei den drei Teilen hier drüber bin ich mir sehr unsicher, denn nach meinem Verständnis kommen da etwas skurrile IP Blöcke bei raus?

    Im Ergebnis bis hierhin KÖNNTE es so aussehen:

    sonos.0.root.255

    sonos.1.root.237

    sonos.0.root.019 <– das kommt mir komisch vor, ich glaube, hier habe ich einen Verständnisfehler

    danach wird es für die nächsten drei Blöcke nochmal wiederholt, mit jeweils _ dazwischen und zum Schluss mit .volume beendet und der String geschlossen ($).

    Bin für jede Hilfestellung dankbar. Habe mich mit regex101.com und danielfett.de versucht einzulesen und das obige sind meine Erkenntnisse, die mir aber wie gesagt nicht plausible erscheinen. Irgendwas ist da wohl falsch

    Nachtrag:

    Inzwischen verstandene Teile adjustiert, Webpage Adresse korrigiert

    <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

    1 Antwort Letzte Antwort
    0
    • BBTownB Offline
      BBTownB Offline
      BBTown
      schrieb am zuletzt editiert von
      #2

      @tempestas:

      Jetzt kommt die IP, hier werde ich unsicher:

      (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)

      Klammern () –-> alles darin eingeschlossene abgreifen, "ein Block".

      25[0-5] –-> 250 bis 255 als Startteil der Sonos IP

      | –-> "oder"

      2[0-4][0-9] –-> 200 bis 249

      | –-> "oder"

      [01]? –-> 0 ODER 1 <u>kann</u> enthalten sein, <u>muss aber nicht</u>

      [0-9] –-> Zahl von 0 -9

      [0-9]? –-> Zahl von 0 -9 <u>kann</u> enthalten sein, <u>muss aber nicht</u>

      sonos.0.root.255

      sonos.1.root.237

      sonos.0.root.019 <– das kommt mir komisch vor, ich glaube, hier habe ich einen Verständnisfehler

      sonos.4.root.97 <--- kommt mir auch komisch vor

      sonos.7.root.136 <-- ebenfalls obskur `
      Du hast eigentlich fast alles korrekt aufgelöst

      Als Ergebnis sollen die SONOS Geräte gefunden werden.

      Beispielsweise: "192_168_178_51"

      Als IP Bereiche erlaubt wären Werte bis maximal 255_255_255_255 und die RegEx prüft nun von links nach rechts alle Kombinationen durch.

      Wenn ein Wert aus 3 Ziffern besteht und die ersten Ziffern sind 25, dann kann die folgende Ziffer nur noch zwischen 0 und 5 sein. (250-255) = [0-5].

      Besteht die erste Ziffer hingegen aus einer 1, dann können die folgenden Ziffern allerdings zwischen 0 und 9 sein da der Bereich von 100 - 199 gehen könnte [0-9].

      Da auch ein- oder zweistellige Ziffernfolgen möglich sein können (z.B. 10_10_1_52) wird eine Ziffer zwingend vorgeschrieben, weitere Ziffern können jedoch optional sein.

      Das wird mit dem Fragezeichen dargestellt.

      [0-9]? soll heißen "KEINE oder genau EINE Ziffer aus dem Bereich 0-9

      die gesuchte Zahl Endet jeweils am Unterstrich "_" da dann die nächste Ziffernfolge beginnt.

      Das Pipe-Symbol | ist - wie auch korrekt von dir aufgeführt, das "ODER.

      "Die Ziffernfolge beginnt mit 25, dann kann nur noch eine Zahl von 0-5 folgen ODER die Ziffernfolge beginnt mit einer 1, dann können auch größere Ziffern folgen" usw.

      [Edit]

      Nachttrag: Die Einführung in RegEx von Daniel Fett finde ich übrigens auch großartig

      https://danielfett.de/de/tutorials/tutorial-regulare-ausdrucke/

      ioBroker auf NUC (VM debian v13 (Trixie ), node v22.21.0 npm v10.9.4, js-controller v7.0.7 jsonl/jsonl / HomeMatic CCU-2 (Wired und Funk) / Philips HUE / echo.DOT / Broadlink RM pro / SONOS

      1 Antwort Letzte Antwort
      0
      • T Offline
        T Offline
        tempestas
        schrieb am zuletzt editiert von
        #3

        Vielen Dank.

        Mein Fehler war offenbar, dass ich mich selbst gedanklich überlistet habe und nicht bedacht habe, dass IPs sehr whohl ja auch Bereiche wie 136… haben können. Bin halt nur BWLer ...

        Natürlich macht eine IP wie 013 nicht viel Sinn. Ich habe aber ignoriert, dass er sie einfach durchprobiert und wenns nicht gefunden wird, dann eben nicht, korrekt?

        Nachtrag: eine Frage habe ich doch noch:

        das [01]? bedeuted doch, dass der Block mit 0 oder 1 beginnen kann, aber nicht muss? Wieso nimmt man hier die 0 mit rein? Imho fängt eine IP doch nicht mit 0xx an, sondern wäre dann eben zweistellig, was wiederum durch die beiden folgenden Blöcke sichergestellt wird?

        Würde es nicht reichen, [1]? zu nehmen? Wenn nein, wieso nicht?

        Wo wir gerade so freundlich tippen, "on an unrelated side note":

        wie funktioniert der "coordinator" in Sonos 1.6? setState( sonos id.coordinator, [coordinator_ip mit unterstrichen] ) funktioniert bei mir nicht wie erhofft?

        <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

        1 Antwort Letzte Antwort
        0
        • BBTownB Offline
          BBTownB Offline
          BBTown
          schrieb am zuletzt editiert von
          #4

          @tempestas:

          wie funktioniert der "coordinator" in Sonos 1.6? setState( sonos id.coordinator, [coordinator_ip mit unterstrichen] ) funktioniert bei mir nicht wie erhofft? `
          Der "coordinator" ist der Gruppenleiter. Ist ein SONOS in einer Gruppe, dann steht hier das SONOS Gerät zu dessen Gruppe es zugefügt wurde. Ist es in keiner Gruppe, dann einfach die eigene Nummer eintragen.

          Es wird genau genommen nicht die IP des Gerätes eingetragen, sondern die Objektbezeichung (auch wenn diese sich wiederum bei der Anlage aus der IP-Adresse ableitet)

          Mein Tipp:

          Schau dir die Datenpunkte an und steuere die Gruppen über eine SONOS App. Du kannst eigentlich recht gut ablesen was mit den Datenpunkten geschieht je nachdem was Du in der App einstellst.

          Anmerkung:

          Falls ein Mod das hier lieber als eigenes Thema sehen möchte - bitte gern verschieben 🙂

          ioBroker auf NUC (VM debian v13 (Trixie ), node v22.21.0 npm v10.9.4, js-controller v7.0.7 jsonl/jsonl / HomeMatic CCU-2 (Wired und Funk) / Philips HUE / echo.DOT / Broadlink RM pro / SONOS

          1 Antwort Letzte Antwort
          0
          • BBTownB Offline
            BBTownB Offline
            BBTown
            schrieb am zuletzt editiert von
            #5

            @tempestas:

            Würde es nicht reichen, [1]? zu nehmen? Wenn nein, wieso nicht? `
            Das würde ich auch annehmen; allerdings hat Pix viel mehr Erfahrung und vielleicht eine Erklärung 8-)

            ioBroker auf NUC (VM debian v13 (Trixie ), node v22.21.0 npm v10.9.4, js-controller v7.0.7 jsonl/jsonl / HomeMatic CCU-2 (Wired und Funk) / Philips HUE / echo.DOT / Broadlink RM pro / SONOS

            1 Antwort Letzte Antwort
            0
            • T Offline
              T Offline
              tempestas
              schrieb am zuletzt editiert von
              #6

              Danke Heiko,

              das habe ich getan. Ich bekomme es nur nicht hin, das coordinator Feld via Skript zu setzen. Daher meine Frage.

              ich meinte es so:

              setState(sonos.0.root.192_168_2_7.coordinator, 192_168_2_10);

              das geht irgendwie nicht?

              P.S: das Thema hatte ich schon separat aufgemacht, aber es gab leider keine Antworten. Und eben ist mir einfallen, dass du damals das Thema coordinator zumindest mit diskutiert hattest. Daher meine Frage an dich 🙂

              <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

              1 Antwort Letzte Antwort
              0
              • BBTownB Offline
                BBTownB Offline
                BBTown
                schrieb am zuletzt editiert von
                #7

                ist der Datenpunkt denn auf "write = true" eingestellt?

                ioBroker auf NUC (VM debian v13 (Trixie ), node v22.21.0 npm v10.9.4, js-controller v7.0.7 jsonl/jsonl / HomeMatic CCU-2 (Wired und Funk) / Philips HUE / echo.DOT / Broadlink RM pro / SONOS

                1 Antwort Letzte Antwort
                0
                • T Offline
                  T Offline
                  tempestas
                  schrieb am zuletzt editiert von
                  #8

                  Werde ich prüfen 🙂 aktuell kein Zugriff

                  <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

                  1 Antwort Letzte Antwort
                  0
                  • BBTownB Offline
                    BBTownB Offline
                    BBTown
                    schrieb am zuletzt editiert von
                    #9

                    Ich übergebe das ganze als string

                    Versuche es mal so:

                    setState("sonos.0.root.192_168_2_7.coordinator"/*coordinator Büro*/, '192_168_2_10')
                    

                    ioBroker auf NUC (VM debian v13 (Trixie ), node v22.21.0 npm v10.9.4, js-controller v7.0.7 jsonl/jsonl / HomeMatic CCU-2 (Wired und Funk) / Philips HUE / echo.DOT / Broadlink RM pro / SONOS

                    1 Antwort Letzte Antwort
                    0
                    • P Offline
                      P Offline
                      pix
                      schrieb am zuletzt editiert von
                      #10

                      @BBTown:

                      @tempestas:

                      Würde es nicht reichen, [1]? zu nehmen? Wenn nein, wieso nicht? Das würde ich auch annehmen; allerdings hat Pix viel mehr Erfahrung und vielleicht eine Erklärung 8-)
                      Hab auch nicht mehr Erfahrung 8-)

                      [01]?[0-9][0-9]?
                      

                      Ich dachte an eine Adresse wie diese````
                      192_168_0_100

                      
                      Gruß
                      
                      Pix

                      ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                      1 Antwort Letzte Antwort
                      0
                      • BBTownB Offline
                        BBTownB Offline
                        BBTown
                        schrieb am zuletzt editiert von
                        #11

                        @pix:

                        Ich dachte an eine Adresse wie diese192_168_0_100 `
                        Welchen Teil daraus?

                        der letzte Block (100)?

                        oder der Vorletzte (0)?

                        würde das nicht so passen?

                        [012]?[0-9]?[0-9]
                        

                        ioBroker auf NUC (VM debian v13 (Trixie ), node v22.21.0 npm v10.9.4, js-controller v7.0.7 jsonl/jsonl / HomeMatic CCU-2 (Wired und Funk) / Philips HUE / echo.DOT / Broadlink RM pro / SONOS

                        1 Antwort Letzte Antwort
                        0
                        • P Offline
                          P Offline
                          pix
                          schrieb am zuletzt editiert von
                          #12

                          @tempestas:

                          Würde es nicht reichen, [1]? zu nehmen? Wenn nein, wieso nicht? ` Ja, ist wohl richtig (ungetestet):

                          [01]?[0-9][0-9]?
                          

                          Die erste 0 kann wohl weg, um einen Block mit nur einer 0 abzudecken (wie hier 192.168.0.100).

                          [1]?[0-9][0-9]?
                          

                          Denn die einzelne 0 (hier im 3. Block) wird ja von der zweiten Gruppe [0-9] ohne Fragezeichen abgefangen (die Abfragen, die vorher mit 25 oder 2 beginnen kann man in diesem Falle ja eh überlesen).

                          Gruß

                          Pix

                          ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                          1 Antwort Letzte Antwort
                          0
                          • T Offline
                            T Offline
                            tempestas
                            schrieb am zuletzt editiert von
                            #13

                            @pix:

                            @BBTown:

                            @tempestas:

                            Würde es nicht reichen, [1]? zu nehmen? Wenn nein, wieso nicht? Das würde ich auch annehmen; allerdings hat Pix viel mehr Erfahrung und vielleicht eine Erklärung 8-)
                            Hab auch nicht mehr Erfahrung 8-)

                            [01]?[0-9][0-9]?
                            

                            Ich dachte an eine Adresse wie diese````
                            192_168_0_100

                            
                            Gruß
                            
                            Pix `  
                            

                            Ahh ok. Klar, mittendrin kann eine 0 vorkommen alleinstehend. und du hast dann einfach aus ökonomischen Gründen überall das gleiche Abfrage Format genommen, korrekt?

                            Frage: wenn ich [1]? [0-9] [0-9]? hätte aber meine IO ist tatsächlich so wie oben````
                            192_168_0_100

                            
                            ****Nachtrag****: eigentlich müsste es doch "nach vorne" rutschen, oder? Pix' Version fragt ja auch nur den ersten Block ab, der zweite MUSS da sein, der dritte kann. wobei ja strengenommen dann bei einstelligen IP Teilen der zweite Block nach vorne rutscht auf den "hunderter Platz", oder? Die Abfrage könnte ja quasi heißen x 9 x, wobei x hier "N/A" sein soll.
                            
                            Wenn das aber so ist, dann sollte doch das hier funktionieren:
                            
                            [1]? [0-9]? [0-9] Damit MUSSS mindestens eine Stelle da sein zwischen 0 und 9, es können mehr sein und ich kann alles von 0 bis 199 abgreifen? Für die 200er und drüber sind ja die anderen Blöcke definiert.
                            
                            Spannendes Thema.

                            <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

                            1 Antwort Letzte Antwort
                            0
                            • P Offline
                              P Offline
                              pix
                              schrieb am zuletzt editiert von
                              #14

                              @tempestas:

                              Spannendes Thema. `
                              Stimmt, aber ich habe die zugeteilte Portion Gehirnschmalz schon aufgebraucht. Läuft ja :lol: Ehrlich gesagt, kann man auch einfach einen Platzhalter nehmen, denn die IP-Adresse wird schon vom Sonos-Adapter korrekt erstellt werden. Sollte das was nicht laufen, ist wohl erstmal die Einstellung im Sonos-Adapter falsch.

                              Gruß

                              Pix

                              ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                              1 Antwort Letzte Antwort
                              0
                              • BBTownB Offline
                                BBTownB Offline
                                BBTown
                                schrieb am zuletzt editiert von
                                #15

                                dann wären wir für jeden Block wieder hier 8-)

                                [12]?[0-9]?[0-9]
                                

                                ioBroker auf NUC (VM debian v13 (Trixie ), node v22.21.0 npm v10.9.4, js-controller v7.0.7 jsonl/jsonl / HomeMatic CCU-2 (Wired und Funk) / Philips HUE / echo.DOT / Broadlink RM pro / SONOS

                                1 Antwort Letzte Antwort
                                0
                                • T Offline
                                  T Offline
                                  tempestas
                                  schrieb am zuletzt editiert von
                                  #16

                                  Haha ja, läuft.

                                  Ich will ja immer nur lernen 🙂 Von dir und so manch anderem habe ich hier eh schon dermaßen profitiert… :idea: 😄

                                  <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

                                  1 Antwort Letzte Antwort
                                  0
                                  • T Offline
                                    T Offline
                                    tempestas
                                    schrieb am zuletzt editiert von
                                    #17

                                    @BBTown:

                                    dann wären wir für jeden Block wieder hier 8-)

                                    [12]?[0-9]?[0-9]
                                    ```` `  
                                    

                                    Stimmt. Hier war gerade soviel Bewegung im Thread, habe ich übersehen. Das müsste nach meinem heute erlangente Verständnis alles abgreifen.

                                    <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

                                    1 Antwort Letzte Antwort
                                    0
                                    Antworten
                                    • In einem neuen Thema antworten
                                    Anmelden zum Antworten
                                    • Älteste zuerst
                                    • Neuste zuerst
                                    • Meiste Stimmen


                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    347

                                    Online

                                    32.4k

                                    Benutzer

                                    81.4k

                                    Themen

                                    1.3m

                                    Beiträge
                                    Community
                                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                    ioBroker Community 2014-2025
                                    logo
                                    • Anmelden

                                    • Du hast noch kein Konto? Registrieren

                                    • Anmelden oder registrieren, um zu suchen
                                    • Erster Beitrag
                                      Letzter Beitrag
                                    0
                                    • Aktuell
                                    • Tags
                                    • Ungelesen 0
                                    • Kategorien
                                    • Unreplied
                                    • Beliebt
                                    • GitHub
                                    • Docu
                                    • Hilfe