none
Frage zu Regex RRS feed

  • Frage

  • Hallo, an sich kenn ich mich zwar ganz gut mit Regex aus, aber habe doch noch ein Problem:
    Ich möchte überprüfen ob die eines der Zeichen "1Aa" in einem string vorkommt, und zwar so das es 1-3 mal direkt hintereinander vorkommen kann. um das näher zu verdeutlichen, hier ein funktionierendes Beispiel:
    Regex.IsMatch("^[1Aa]$|^[1Aa]{2}$|^[1Aa]{3}$", input)
    Mein Problem ist hierbei, das die ;aximalzahl der Vorkommen variabel ist und bis zu 500 Ansteigen kann. Das dann jedes mal zu erzeugen würde einfach zu lange dauern. Darum hatte ich folgende (erfolglose) Idee:
    Regex.IsMatch("^[1Aa]{1-3}$", input);
    Gibt es eine Möglichkeit soetwas nur per Regex zu realisieren, am besten eben so kurz wie möglich?

    Koopakiller - http://koopakiller.ko.ohost.de/

    Samstag, 2. Juni 2012 15:09
    Moderator

Antworten

  • Hallo

    Syntax ist minimal anders: Komma statt Minus:

    Regex.IsMatch("^[1Aa]{1,3}$", input);


    wenn's dynamisch sein soll als Funktion:

    bool Is1Aa(string input, int min, int max)
    {
        if (min < 1 || max < 1 || max < min) throw new ArgumentOutOfRangeException();
        return Regex.IsMatch("^[1Aa]{" min +"," + max + "}$", input);
    }


    Gruß,
    Christoph


    Samstag, 2. Juni 2012 15:16