Torsten: Regulären Ausdruck suchen

Hallo,

ich tue mich etwas schwer mit RegEx.
Ich möchte gerne einen String nach einem Teilstring durchsuchen. Allerdings dürfen VOR und NACH dem Ausdruck den ich suche NUR Leerzeichen stehen.
Also wäre bei "hallo" der String "Juhu... hallo .. toll" falsch und "    hallo        " eben richtig.

Weiß jemand wie ich das am besten realisiere?

Tia,
:-) Torsten

  1. Hi,

    sowas? /\s+hallo\s+/

    Gruesse  Joachim

    1. Hallo Joachim,

      sowas? /\s+hallo\s+/

      Quantifier sind hier gar nicht notwendig,
      /\shallo\s/ reicht voellig aus. Die Quantifier
      machen den RegEx nur unnoetig langsam.

      Gruesse,
       CK

      --
      Kommt ein Vektor zur Drogenberatung: "Hilfe, ich bin linear abhaengig!"
    2. sowas? /\s+hallo\s+/

      Spitze, klappt!

      Allerdings möchte ich den Ausdruck gerne aus einem Array holen. Wenn ich die mit
      myRegEx = eval('/\s+' + commands[i] + '\s+/');
      zusammenbaue, schmeisst er die Backslashs raus. Wie kann ich das denn umgehen? (Hängt nicht von einfachen oder doppelten Anführunsgstrichen ab!)

      Tia,
      :-) Torsten

      1. Hi,

        myRegEx = eval('/\s+' + commands[i] + '\s+/');

        var reg = eval("/\s" + commands[i] + "\s/");

        Gruesse  Joachim

        1. gruss Joachim, hi Torsten,

          myRegEx = eval('/\s+' + commands[i] + '\s+/');
          var reg = eval("/\s" + commands[i] + "\s/");

          knapp daneben: "eval is evil" (TM) by Cheatah
             warum - z.b. hier: http://forum.de.selfhtml.org/archiv/2002/8/20519/#m115050 ff.
             noch mehr davon: http://selfsuche.teamone.de/cgi-bin/such.pl?suchausdruck=%2Beval+%2Bevil+%2Bcheatah&lang=on&feld=alle&index_5=on&index_6=on&index_7=on&hits=100#Forums-Archiv 2003

          ausserdem ist die methode "eval" in den meisten missbrauchs-
             faellen um ein vielfaches langsamer als die sauber programmierte
             alternative;

          regulaere ausdruecke sind JavaScript-objekte;
             die meissten js-objekte lassen sich sowohl
             ueber ihre literalschreibweise als auch ueber
             ihre konstruktorfunktion definieren;

          @Torsten - in Deinem beispiel ist es Dir nicht

          moeglich, das objektliteral /\s+phrase\s+/ fuer
             ein bestimmtes RegExp-objekt zu verwenden, die
             "eval"-methode scheidet aus guten gruenden aus -
             der konstruktor "RegExp" loest das dilemma:

          var regX = new RegExp("\s+" + phrase + "\s+");

          dies bietet ausserdem den vorteil, die "compile"-
             methode des RegExp-objektes anwenden zu koennen,
             falls weitere suchausdruecke ueber dasselbe RegExp-
             objekt realisiert werden sollen - bsp.:

          var searchFor = ["hallo","hi"];
             var regX = new RegExp("\s+" + searchFor[0] + "\s+","i");
             alert(regX); // [/\s+hallo\s+/i];
             regX.compile("\s+" + searchFor[1] + "\s+","i");
             alert(regX); // [/\s+hi\s+/i];

          by(t)e by(t)e - peterS. - pseliger@gmx.net

          --
          sh:| fo:) ch:? rl:| br:& n3:} n4:# ie:| mo:{ va:| de:[ zu:] fl:) ss:) ls:& js:)