Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Frage zu RegEx am Beispiel von Pix

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    208

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

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

Frage zu RegEx am Beispiel von Pix

Frage zu RegEx am Beispiel von Pix

Scheduled Pinned Locked Moved Skripten / Logik
17 Posts 3 Posters 1.2k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    T Offline
    tempestas
    wrote on last edited by
    #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 Reply Last reply
    0
    • BBTownB Offline
      BBTownB Offline
      BBTown
      wrote on last edited by
      #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 Reply Last reply
      0
      • T Offline
        T Offline
        tempestas
        wrote on last edited by
        #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 Reply Last reply
        0
        • BBTownB Offline
          BBTownB Offline
          BBTown
          wrote on last edited by
          #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 Reply Last reply
          0
          • BBTownB Offline
            BBTownB Offline
            BBTown
            wrote on last edited by
            #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 Reply Last reply
            0
            • T Offline
              T Offline
              tempestas
              wrote on last edited by
              #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 Reply Last reply
              0
              • BBTownB Offline
                BBTownB Offline
                BBTown
                wrote on last edited by
                #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 Reply Last reply
                0
                • T Offline
                  T Offline
                  tempestas
                  wrote on last edited by
                  #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 Reply Last reply
                  0
                  • BBTownB Offline
                    BBTownB Offline
                    BBTown
                    wrote on last edited by
                    #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 Reply Last reply
                    0
                    • P Offline
                      P Offline
                      pix
                      wrote on last edited by
                      #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 Reply Last reply
                      0
                      • BBTownB Offline
                        BBTownB Offline
                        BBTown
                        wrote on last edited by
                        #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 Reply Last reply
                        0
                        • P Offline
                          P Offline
                          pix
                          wrote on last edited by
                          #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 Reply Last reply
                          0
                          • T Offline
                            T Offline
                            tempestas
                            wrote on last edited by
                            #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 Reply Last reply
                            0
                            • P Offline
                              P Offline
                              pix
                              wrote on last edited by
                              #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 Reply Last reply
                              0
                              • BBTownB Offline
                                BBTownB Offline
                                BBTown
                                wrote on last edited by
                                #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 Reply Last reply
                                0
                                • T Offline
                                  T Offline
                                  tempestas
                                  wrote on last edited by
                                  #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 Reply Last reply
                                  0
                                  • T Offline
                                    T Offline
                                    tempestas
                                    wrote on last edited by
                                    #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 Reply Last reply
                                    0
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes


                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    107

                                    Online

                                    32.4k

                                    Users

                                    81.3k

                                    Topics

                                    1.3m

                                    Posts
                                    Community
                                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                    ioBroker Community 2014-2025
                                    logo
                                    • Login

                                    • Don't have an account? Register

                                    • Login or register to search.
                                    • First post
                                      Last post
                                    0
                                    • Recent
                                    • Tags
                                    • Unread 0
                                    • Categories
                                    • Unreplied
                                    • Popular
                                    • GitHub
                                    • Docu
                                    • Hilfe