Regex benötigt

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Regex benötigt

    Hallo zusammen, leider bekomme ich meine regex für folgendes pattern nicht hin:
    [\w]\-[\d] {10}

    Soll heißen: Buchstabe oder Zahl gefolgt von NUR EINEM - (Bindestrich) und dann wieder Zahlen. Alles in allem muss die Länge aber 10 Zeichen lang sein.

    Jemand einen Hinweis für mich?

  • #2
    Zitat von HansDampfHH Beitrag anzeigen
    Soll heißen: Buchstabe oder Zahl
    Warum dann \w, warum nicht spezifischer?

    (Btw., du meinst Ziffer, nicht Zahl.)
    gefolgt von NUR EINEM - (Bindestrich)
    Warum maskiert?

    Alles in allem muss die Länge aber 10 Zeichen lang sein.
    Na dann müsste sich der Quantifier auch auf „alles“ beziehen, und nicht nur auf die letzte Zeichenklasse.

    Aber vielleicht besinnst du mal dich auf deine „Mathekenntnisse“ aus der Schule – und überlegst dir, dass 10 Zeichen minus einmal Buchstabe/Ziffer und einmal Bindestrich … äh, was noch mal ergibt …?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Okay, dann noch mal ergänzend, dass das natürlich nicht das Pattern sein soll sondern nur zur Veranschaulichung dient.

      Versucht habe ich bereits diverses, es scheitert leider daran, dass ich nicht weiß, wie ich definiere, dass links/rechts beliebige Zeichen sein dürfen, in der Mitte aber nur EIN Bindestrich, alles in allem muss aber 10 Zeichen lang sein.

      ([\w]+-[\d]+){10}

      So hätte ich erst vermutet, allerdings bezieht sich die 10 nun auf die Gruppe was ja quatsch ist.

      Ich unterstelle mal, dass ich des Zählens mächtig bin ;-)

      Kommentar


      • #4
        Zitat von HansDampfHH Beitrag anzeigen
        es scheitert leider daran, dass ich nicht weiß, wie ich definiere, dass links/rechts beliebige Zeichen sein dürfen,
        Was jetzt – links auch beliebig viele? Vorher war doch von genau einem Zeichen vor dem Bindestrich die Rede.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Genau, sehe auch gerade, dass ich das nicht korrekt klar gestellt habe.

          Es können also folgende Beispiele vorkommen:
          V12116-127
          12H3-19751
          F1198567-1

          Kommentar


          • #6
            Das mit der Länge von 10 Zeichen kriegst du hier mit einem Regex so leicht nicht abgebildet, zumindest ist mir keine direkte Möglichkeit bekannt.

            Ein Workaround wäre, die verschiedenen Möglichkeiten
            • 1 Zeichen vor, 8 Zeichen nach dem Bindestrich
            • 2 Zeichen vor, 7 Zeichen nach dem Bindestrich
            • 8 Zeichen vor, 1 Zeichen nach dem Bindestrich

            alle explizit als einzelne Muster zu formulieren, und diese dann mittels | zu verknüpfen … schön ist natürlich was anderes.


            Je nachdem, was genau du damit vorhast, könnte man vielleicht die wegen unpassender Länge nicht zählenden Treffer auch nachgelagert aussortieren oder sowas.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Okay, dann stand ich doch nicht so auf dem Schlauch als ich dachte, dass es nicht geht. Die einzelnen Fälle alle abzubilden hatte ich von vorn herein nicht in Erwägung gezogen.

              Ich mach es dann wohl eher doch aus einer Mischung von zwei preg_match().
              Danke aber für deinen Input.

              Kommentar

              Lädt...
              X