Nick: Reg Exp: Mindestens eine Ziffer an beliebiger Stelle

Hallo,

könnte mir jemand einen Tipp geben, wie ein regulärer Ausdruck aussehen muss, der mit Strings bestehend aus kleinen Buchstaben und mindestens einer Ziffer an beliebiger Stelle matcht?

abcd1 - Match
ab1cde - Match
1ab - Match

abcdef - Mismtach
ab - Mismatch
a - Mismatch

usw.

Grüße
Nick

  1. Hello,

    könnte mir jemand einen Tipp geben, wie ein regulärer Ausdruck aussehen muss, der mit Strings bestehend aus kleinen Buchstaben und mindestens einer Ziffer an beliebiger Stelle matcht?

    vielleicht so:

    ~^.*d+.*$~

    siehe http://de2.php.net/manual/en/reference.pcre.pattern.syntax.php

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hello,

      könnte mir jemand einen Tipp geben, wie ein regulärer Ausdruck aussehen muss, der mit Strings bestehend aus kleinen Buchstaben und mindestens einer Ziffer an beliebiger Stelle matcht?

      vielleicht so:

      ~^.*d+.*$~

      *äh*    ~^.*\d+.*$~

      siehe http://de2.php.net/manual/en/reference.pcre.pattern.syntax.php

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Hallo Tom,

        vielen Dank für deine schnelle Antwort.

        vielleicht so:

        ~^.*d+.*$~

        *äh*    ~^.*\d+.*$~

        Das ist schon sehr mal gut, nur lässt .* ja nicht nur Kleinbuchstaben zu.

        ~[1]*\d+[a-z]*$~ müsste aber passen, oder?

        Wenn es insgesamt 20 Zeichen sein sollen, muss ich dann mit runden Klammern arbeiten?

        Geht das so? ~^([a-z]*\d+[a-z]*){20}$~

        Grüße
        Nick


        1. a-z ↩︎

        1. Grüße,

          ~[1]*\d+[a-z]*$~ müsste aber passen, oder?

          das könnte bei a1a1a mismatch geben, oder?
          MFG
          bleicher

          --
          __________________________-

          FirefoxMyth

          1. a-z ↩︎

          1. ~[1]*\d+[a-z]*$~ müsste aber passen, oder?

            das könnte bei a1a1a mismatch geben, oder?

            Stimmt. :-(


            1. a-z ↩︎

            1. Hallo,

              ~[1]*\d+[a-z]*$~ müsste aber passen, oder?

              das könnte bei a1a1a mismatch geben, oder?

              ok, Du willst also genau das umsetzen, was ich in meinem ersten Beitrag mit Worten beschrieben habe. Dachte ich mir's doch.

              Die erforderliche Modifikation ist doch ganz einfach.
              Welche Zeichen musst Du in der Zeichenklasse hinter der Ziffer noch zulassen.
              Und ja: entferne das Pluszeichen!

              Freundliche Grüße

              Vinzenz


              1. a-z ↩︎

              1. Grüße,
                muss man bei "Mindestens eine ziffer" überhaupt auf etwas außer ziffer prüfen?
                .*[0-9]+.* oder ä. wäre doch shcon drin? (jaaa ich habe kein ahnung von regexp und vergessen wer der */+ für 0<= oder 1<= steht^^)
                MFG
                bleicher

                --
                __________________________-

                FirefoxMyth
          2. BTW:
            bleicher.isgreat.org: This Account may have reached its limit, is suspended or this domain no longer exists.

            1. Grüße,

              bleicher.isgreat.org: This Account may have reached its limit, is suspended or this domain no longer exists.

              jep - scho länger :( aber was soll ich machen?
              MFG
              bleicher

              --
              __________________________-

              FirefoxMyth
        2. Hallo,

          ~[1]*\d+[a-z]*$~ müsste aber passen, oder?

          nicht unbedingt. Die Aufgabe ist ungenügend beschrieben.

          Darf nur an einer Stelle eine Ziffernfolge von mindestens einer Ziffer auftreten oder dürfen an mehreren, mindestens aber einer Stelle Ziffern auftreten:

          abc1def2ghi

          Soll das Muster passen oder nicht?

          Wie bereits gefragt:
          Welche Zeichencodierung verwendest Du?
          Welche Kleinbuchstaben gestattest Du?

          Wenn es insgesamt 20 Zeichen sein sollen, muss ich dann mit runden Klammern arbeiten?

          Geht das so? ~^([a-z]*\d+[a-z]*){20}$~

          Nein, das verlangt allein schon mal mindestens 20 Ziffern :-)
          Die 20 Zeichen prüfst Du sinnvollerweise mit einer passenden Funktion, nicht mit einem Muster.

          Freundliche Grüße

          Vinzenz


          1. a-z ↩︎

  2. Hallo,

    könnte mir jemand einen Tipp geben, wie ein regulärer Ausdruck aussehen muss, der mit Strings bestehend aus kleinen Buchstaben und mindestens einer Ziffer an beliebiger Stelle matcht?

    abcd1 - Match
    ab1cde - Match
    1ab - Match

    abcdef - Mismtach
    ab - Mismatch
    a - Mismatch

    Du hättest also gern
       den Beginn der Zeichenkette,
       gefolgt von beliebig vielen, auch 0, Kleinbuchstaben,
       gefolgt von einer Ziffer,
       gefolgt von beliebig vielen, auch 0, Kleinbuchstaben oder Ziffern,
       gefolgt vom Ende der Zeichenkette

    Sollte mit dem Link von Tom einfach umzusetzen sein.

    Hinweise:
    Toms Vorschlag passt nicht exakt zu dem von Dir beschriebenen Problem.
    Du solltest die PCRE verwenden und von den POSIX-erweiterten regulären Ausdrücken Abstand nehmen.
    Das Pluszeichen, das Tom verwendet, ist überflüssig, der Punkt falsch.

    Fragen:
    Welche Zeichencodierung verwendest Du?
    Was sind für Dich Kleinbuchstaben?
    Welche Auswahl gestattest Du?

    Freundliche Grüße

    Vinzenz

    1. Hello,

      Das Pluszeichen, das Tom verwendet, ist überflüssig,

      Wieso ist das überflüssig?

      der Punkt falsch.

      Ok, ich habe überlesen, dass nur Kleinbuchstaben gefordert waren.

      Und dann fällt mir noch das Stichwort "Greedyness" ein, je nach Voreinstellung der RegExpMachine

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Hello,

        Das Pluszeichen, das Tom verwendet, ist überflüssig,

        Wieso ist das überflüssig?

        Na gut, gebe mich geschlagen. "mindestens einer Ziffer" ... Dafür teicht das \d tatsächlich.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
    2. Hallo Vinzenz,

      vielen Dank für deine Antwort.

      Du hättest also gern
         den Beginn der Zeichenkette,
         gefolgt von beliebig vielen, auch 0, Kleinbuchstaben,
         gefolgt von einer Ziffer,
         gefolgt von beliebig vielen, auch 0, Kleinbuchstaben oder Ziffern,
         gefolgt vom Ende der Zeichenkette

      Genau, oder wie ich es mit anderen Worten ausdrückte: Strings bestehend aus kleinen Buchstaben und mindestens einer Ziffer an beliebiger Stelle. ;-)

      Sollte mit dem Link von Tom einfach umzusetzen sein.

      Hinweise:
      Toms Vorschlag passt nicht exakt zu dem von Dir beschriebenen Problem.
      Du solltest die PCRE verwenden und von den POSIX-erweiterten regulären Ausdrücken Abstand nehmen.

      Aus welchem Grund?

      Das Pluszeichen, das Tom verwendet, ist überflüssig, der Punkt falsch.

      Aber das Pluszeichen steht doch für "mindestens einmal"!?

      Wieso ist der Punkt falsch?

      Welche Zeichencodierung verwendest Du?

      UTF-8

      Was sind für Dich Kleinbuchstaben?

      Ist das nicht eindeutig? Nee, du hast recht. Gemeint waren die Buchstaben von a-z, keine Umlaute und kein Eszett.

      Welche Auswahl gestattest Du?

      Wie meinen?

      Grüße
      Nick

      1. Hallo,

        Hinweise:
        Toms Vorschlag passt nicht exakt zu dem von Dir beschriebenen Problem.
        Du solltest die PCRE verwenden und von den POSIX-erweiterten regulären Ausdrücken Abstand nehmen.

        Aus welchem Grund?

        lies doch bitte einfach die Beschreibungen zu den Funktionen durch. Welches Merkmal haben die Beschreibungen gemeinsam?

        Das Pluszeichen, das Tom verwendet, ist überflüssig, der Punkt falsch.
        Aber das Pluszeichen steht doch für "mindestens einmal"!?

        ok, das hängt durchaus von der noch unklaren Aufgabenstellung ab. Deine bisherigen Texte lassen sich nicht darüber aus, ob an zwei unterschiedlichen Stellen Ziffernfolgen von mindestens einer Ziffer vorkommen dürfen.

        Wieso ist der Punkt falsch?

        das hast Du doch selbst gemerkt: der Punkt steht für beliebige Zeichen, Du gestattest jedoch nur Kleinbuchstaben und Ziffern.

        Welche Zeichencodierung verwendest Du?
        UTF-8

        Was sind für Dich Kleinbuchstaben?

        Ist das nicht eindeutig? Nee, du hast recht. Gemeint waren die Buchstaben von a-z, keine Umlaute und kein Eszett.

        Welche Auswahl gestattest Du?
        Wie meinen?

        siehe oben: wie oft dürfen Ziffernfolgen vorkommen?

        Freundliche Grüße

        Vinzenz

        1. lies doch bitte einfach die Beschreibungen zu den Funktionen durch. Welches Merkmal haben die Beschreibungen gemeinsam?

          Das war mir zu viel auf einmal.

          Das Pluszeichen, das Tom verwendet, ist überflüssig, der Punkt falsch.
          Aber das Pluszeichen steht doch für "mindestens einmal"!?

          ok, das hängt durchaus von der noch unklaren Aufgabenstellung ab. Deine bisherigen Texte lassen sich nicht darüber aus, ob an zwei unterschiedlichen Stellen Ziffernfolgen von mindestens einer Ziffer vorkommen dürfen.

          Es muss an mindestens einer Stelle genau eine Ziffer vorkommen, darüber hinaus darf an beliebig vielen Stellen eine Ziffer vorkommen, so dass auch ein String, der ausschließlich aus Ziffern besteht, gültig ist.

          Wieso ist der Punkt falsch?

          das hast Du doch selbst gemerkt: der Punkt steht für beliebige Zeichen, Du gestattest jedoch nur Kleinbuchstaben und Ziffern.

          Ach das meintest du.

      2. Hallo,

        Du hättest also gern
           den Beginn der Zeichenkette,
           gefolgt von beliebig vielen, auch 0, Kleinbuchstaben,
           gefolgt von einer Ziffer,

        nein, *mindestens* einer Ziffer.

        gefolgt von beliebig vielen, auch 0, Kleinbuchstaben oder Ziffern,
           gefolgt vom Ende der Zeichenkette
        Genau, oder wie ich es mit anderen Worten ausdrückte: Strings bestehend aus kleinen Buchstaben und mindestens einer Ziffer an beliebiger Stelle. ;-)

        Ja, aber die Formulierung von Vinzenz ist präziser und näher daran, sie direkt in Code umsetzen zu können. Deine verbale Beschreibung passt nämlich auch auf einen String, der mehrere Gruppen von Ziffern zwischen Kleinbuchstaben enthält. Aber das willst du ja anscheinend nicht.

        Was sind für Dich Kleinbuchstaben?
        Ist das nicht eindeutig? Nee, du hast recht. Gemeint waren die Buchstaben von a-z, keine Umlaute und kein Eszett.

        Also auch keine griechischen, hebräischen oder kyrillischen Kleinbuchstaben? Da die in UTF-8 alle mit mindestens zwei Bytes codiert werden, wären sie in einem RegEx schwierig zu formulieren.

        Ciao,
         Martin

        --
        Lieber Blödeleien als blöde Laien.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        1. Hallo Martin,

          danke für deine Antwort.

          nein, *mindestens* einer Ziffer.

          Stimmt. :-)

          Ja, aber die Formulierung von Vinzenz ist präziser und näher daran, sie direkt in Code umsetzen zu können. Deine verbale Beschreibung passt nämlich auch auf einen String, der mehrere Gruppen von Ziffern zwischen Kleinbuchstaben enthält. Aber das willst du ja anscheinend nicht.

          Meiner Erachtens nicht. Dann müsste es ja heißen "[...] an beliebigen Stellen."

          Also auch keine griechischen, hebräischen oder kyrillischen Kleinbuchstaben? Da die in UTF-8 alle mit mindestens zwei Bytes codiert werden, wären sie in einem RegEx schwierig zu formulieren.

          Nee, nur a-z.

          1. Meines Erachtens nicht. Dann müsste es ja heißen "[...] an beliebigen Stellen."

            Ich bin schon ganz durcheinander, sorry. Vergiss das bitte.

            Anstatt "mindestens eine Ziffer an beliebiger Stelle" hätte ich schreiben sollen "an mindestens einer Stelle eine beliebige Ziffer".

        2. Hi!

          Also auch keine griechischen, hebräischen oder kyrillischen Kleinbuchstaben? Da die in UTF-8 alle mit mindestens zwei Bytes codiert werden, wären sie in einem RegEx schwierig zu formulieren.

          Nö, es gibt den Modifizierer u, mit dem interpretiert die PCRE-Maschine erstmal alles als UTF-8. Und dann gibt es Metazeichen, die Unicode character properties beachten. \pLl sind alle Kleinbuchstaben, auch die griechischen, kyrillischen, koptischen, armenischen, mathematischen, ...

          Beim Recherchieren bin ich auf eine Seite gestoßen, die Unicode Character Properties Excel Workbooks anbietet. Autofilter sind da bereits drin, so dass man problemlos die General Category filtern kann.

          Lo!

          1. Hallo,

            Also auch keine griechischen, hebräischen oder kyrillischen Kleinbuchstaben? Da die in UTF-8 alle mit mindestens zwei Bytes codiert werden, wären sie in einem RegEx schwierig zu formulieren.
            Nö, es gibt den Modifizierer u, mit dem interpretiert die PCRE-Maschine erstmal alles als UTF-8.

            danke, wieder was dazugelernt ... :-)

            Ciao,
             Martin

            --
            Lieber eine gesunde Verdorbenheit als eine verdorbene Gesundheit.
            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(