bob: Reguläre Ausdrücke in PERL

Hallo,
ich versuche gerade einen regulären Ausdruck zu basteln. Es soll eine Variable geprüft werden ob die Zeichen in der Variable vorkommen. Es wird aber leider immer nur dass erste Zeichen und nicht jedes Zeichen geprüft, was ist zu tun?

if( variable !~ /[a-zA-Z0-9_äöüÄÖÜ]/gims) ){}

mfg
bob

  1. Halihallo bob

    ich versuche gerade einen regulären Ausdruck zu basteln. Es soll eine Variable geprüft werden ob die Zeichen in der Variable vorkommen. Es wird aber leider immer nur dass erste Zeichen und nicht jedes Zeichen geprüft, was ist zu tun?

    Informiere dich über die Direktiven '$' und '^' und der passenden Kardinalität (+|*)

    if( variable !~ /[a-zA-Z0-9_äöüÄÖÜ]/gims) ){}

    if ($variable !~ /[1]+$/gms) { ... }

    Caseinsensitive kannst du gerne weglassen, wenn du explizit alle Gross-
    /Kleinschreibweisen in der Zeichenklasse aufzählst.

    Viele Grüsse

    Philipp

    --
    RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
    Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.

    1. a-zA-Z0-9_äöüÄÖÜ ↩︎

    1. if ($variable !~ /[1]+$/gms) { ... }

      Danke, und wie könnte ich nun noch Sonderzeichen mit einbeziehen? Muss ich dann jedes Sonderzeichen einzeln angeben, dass wäre ja doof ?!

      bob


      1. a-zA-Z0-9_äöüÄÖÜ ↩︎

      1. Hi,

        Danke, und wie könnte ich nun noch Sonderzeichen mit einbeziehen? Muss ich dann jedes Sonderzeichen einzeln angeben, dass wäre ja doof ?!

        Was meinst du mit Sonderzeichen? Grundsätzlich umfasst die Zeichenklasse \w auch den Unterstrich, wenn's etwas mehr oder was anderes sein soll, dann musst du meines Wissens nach die Sonderzeichen in deiner selbst definierten Klasse explizit mit angeben.

        Viele Grüße
        Torsten

        1. Was meinst du mit Sonderzeichen? Grundsätzlich umfasst die Zeichenklasse \w auch den Unterstrich, wenn's etwas mehr oder was anderes sein soll, dann musst du meines Wissens nach die Sonderzeichen in deiner selbst definierten Klasse explizit mit angeben.

          Ich meine so Zeichen wie: ?!-:()&$*> ... etc

          bob

          1. Hi bob,

            Was meinst du mit Sonderzeichen?
            Ich meine so Zeichen wie: ?!-:()&$*> ... etc

            In Kombination mit meinem Vorschlag könnte dein Regulärer Ausdruck dann so aussehen:
            $meinre = '[0-9a-zA-Z?!-:()&$*]*';

            Den kannst du dann überall, wo du es brauchst, nach folgendem Schema verwenden:
            $variable =~ /^$meinre$/;

            Ansonsten geht natürlich auch der umgekehrte Weg, indem du die Sonderzeichen raussuchst, die du _nicht_ haben willst:
            $meinre = '[^...]';

            Wobei es wohl schwierig sein dürfte, die Pünktchen mit Leben zu füllen, und sicher gibt's auch eine bessere Lösung ;)

            Viele Grüße
            Torsten

      2. Halihallo bob

        if ($variable !~ /[1]+$/gms) { ... }
        Danke, und wie könnte ich nun noch Sonderzeichen mit einbeziehen? Muss ich dann jedes Sonderzeichen einzeln angeben, dass wäre ja doof ?!

        Entweder musst du jedes einzeln angeben, oder du erstellst eine Zeichenklasse der
        "normalen Zeichen" und invertierst diese. Fragt sich nur, was weniger Aufwand ist, das
        musst du entscheiden. Was meinst du denn mit Sonderzeichen?

        Viele Grüsse

        Philipp

        --
        RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
        Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.

        1. a-zA-Z0-9_äöüÄÖÜ ↩︎