Florian Haupt: reguläre ausdrücke

Ich habe folgende Frage,

wie kann ich mir durch einen regulären ausdruck einen Substring (im beispiel den image tag) ausgeben lassen ?

Beispiel:
<A href="http://www.test.de"><IMG border=0 src="bla.gif"></A>

hab schon alles mögliche probiert..

Gruß, flo

  1. Sup!

    $foo = '<A href="http://www.test.de"><IMG border=0 src="bla.gif"></A>%';
    while ( $foo =~ s/(<.*?>)//)
      {
       print $1."\n";
      }

    in Perl ;-)

    Gruesse,

    Bio

    1. Hi,

      danke an alle die "sinnvolle" antworten gegeben haben..
      ich werde mich das näxte mal mit der formulierung der frage mehr bemühen.... :-)

      trotzdem danke

      cu

      flo

  2. HI!

    RegExp sind meine Freunde - Allerdings hab ich gerade kein Perl zur Hand um meinen Versucht Testen zu können, aber das folgende sollte im schlimmsten Fall einen guten Ansatz und im Besten Fall eine Lösung liefern:

    /<IMG .*?>/

    bin mir nicht sicher, ob man < > wirklich codieren muss.

    was allerdings wichtig ist, und in sehr vielen implementierungen der regexp fehlt, ist die möglichkeit aus einem "gefräsigen" RegExp einen "nicht gefräsigen" zu machen. Das geschieht durch das ? nach dem .*

    Ohne dem ? würde der RegExp so lange suchen, bis er das letzt > findet, was in deinem Fall <img ...></a> liefern würde.

    Wie gesagt, Perl kennt das ? und somit sollte das oben genannte mehr oder weniger funzen.

    Liebe Grüße
    fredy

    1. Hi folks!

      /<IMG .*?>/

      [...]

      Ohne dem ? würde der RegExp so lange suchen, bis er das letzt > findet, was in deinem Fall <img ...></a> liefern würde.

      Dem kann man in diesem Fall begegnen, indem man
      /<img [^>]*>/
      schreibt.

      Jedoch ist die Aufgabenstellung von Florian "unterspezifiziert", wie ein wohlbekannter Gast dieses Forums aus aelteren Tagen zu sagen pflegte. Wonach soll denn gesucht werden? Nach dem IMG-Tag? Oder nach allem, was innerhalb des Links steht? Oder was?

      So long

      1. Hi!

        /<img [^>]*>/

        Das gefällt mir!

        Liebe Grüße
        fredy

  3. n'Abend miteinander !

    Obwohl alle Vorposter so weit ich es beurteilen kann [1] mit
    den RegExp recht haben wundert es mich doch, dass alle
    Perl-Beispiele (ok, ist ja wirklich eine Perle) bringen.

    Im Thema steht doch eindeutig "Javascript". Und wie ich
    mich soeben überzeugen konnte (Schande, ist mir bis jetzt
    entgangen) beherrscht Javascript - lt. SelfHTML 8.0 :)

    • reguläre Ausdrücke.

    Und dann wundern wir uns wieder über Postings wie "ich fragte
    nach Birnen und alle redeten von Äpfeln" [2] ;-)

    Schönen Abend noch !

    MfG McNavc

    [1] McNavc bastelt sich einen regulären Ausdruck:

    • mindestens 3 Shells mit 'man egrep' offen und an
      relevanten Textstellen positioniert
    • eine Shell mit 'man egrep' zum Blättern und
    • noch eine offene Shell wo solange probiert wird, bis
      das Ergebniss meinen Vorstellungen entspricht ... ok, ist
      wirklich nicht meine Stärke :)

    [2] Auch wenn Viele nur nach Obst fragen und dabei an Birnen denken :)

    1. Sup!

      Im Thema steht doch eindeutig "Javascript". Und wie ich
      mich soeben überzeugen konnte (Schande, ist mir bis jetzt
      entgangen) beherrscht Javascript - lt. SelfHTML 8.0 :)

      • reguläre Ausdrücke.

      So ist es. Und diese RegExp kommen von Perl, und wenn der gute Mann, der die Frage gestellt hat, nicht dumm oder sowas ist, dann wird er die angebotenen RegExp wohl von Perl nach JS portieren können. Das ist hier ja nicht das Komplettlösungsforum oder so, wird erzählt.

      Im übrigen ist die Frage in der Tat nicht gut gestellt, weil nicht daraus hervorgeht, was er eigentlich rausfiltern will.

      Und - so ein Pech - der ach-so-tolle IE beherrscht im Gegensatz zu Netscape (seit Version 3, glaube ich) und Mozilla den non-greedy-Operator "?" _nicht_. IE-Coder dürfen also mit lustigen Suchausdruecken und Schleifen herumprobieren.

      Gruesse,

      Bio

      1. Sup!

        Im Thema steht doch eindeutig "Javascript". Und wie ich
        mich soeben überzeugen konnte (Schande, ist mir bis jetzt
        entgangen) beherrscht Javascript - lt. SelfHTML 8.0 :)

        • reguläre Ausdrücke.

        So ist es. Und diese RegExp kommen von Perl, ...

        Äh, nicht ganz. Perl ist nur für die IMHO ausgezeichnete Implementierung und Integration in die Sprache bekannt.

        Im übrigen ist die Frage in der Tat nicht gut gestellt, weil nicht daraus hervorgeht, was er eigentlich rausfiltern will.

        Das ist vollkommen richtig.
        Hier so auf die Schnelle "richtige" Lösungen (sicher lich nicht vollständig), um das IIMG-Tag zu erwischen:

        /<IMG border=0 src="bla.gif">/
        /(<IMG[^>]*>)/
        /(<\s*IMG[^>]*>)/
        /(<\s*img[^>]*>)/i
        /(<\s*IMG.*?>)/
        /(<\s*img.*?>)/i

        Aber vielleicht wollte er einfach nur http://selfhtml.teamone.de/javascript/objekte/regexp.htm#dollar_1_9 lesen.
        Dort Sthet nämlich, wie in Javascript auf die Treffer zugegriffen werden kann.

        Und - so ein Pech - der ach-so-tolle IE beherrscht im Gegensatz zu Netscape (seit Version 3, glaube ich) und Mozilla den non-greedy-Operator "?" _nicht_.

        Was allerdings auch nicht den Untergang des Abendlandes, äh, das Scheitern beim Finden einer brauchbaren Lösung, bedeutet.

        IE-Coder dürfen also mit lustigen Suchausdruecken und Schleifen herumprobieren.

        Was allerdings auch bedeutet, daß verantwortungsvolle, oder zumindest jene, die sich nichts vorwerfen lassen wollen, JavaScript-Programmierer den Non-Greedy-Operator tunlichst vermeiden, da IMHO im Web der kleinste gemeinsame Nenner das Optimum darstellt.

        Grüße
          Klaus

      2. n'Abend Bio !

        Und - so ein Pech - der ach-so-tolle IE beherrscht im Gegensatz zu Netscape (seit Version 3, glaube ich) und Mozilla den non-greedy-Operator "?" _nicht_. IE-Coder dürfen also mit lustigen Suchausdruecken und Schleifen herumprobieren.

        Och, wer unter M$ Excel die Klippe 1+1=1,99999998 umschifft hat,
        wird sich auch damit fertig ;-)

        MfG McNavc

      3. nochmals n'Abend !

        Och, wer unter M$ Excel die Klippe 1+1=1,99999998 umschifft hat,

        wird sich auch damit fertig ;-)

        Der Deutschbuch hat mich sehr gehilft.

        Muss natürlich ... wird sicher auch damit ... lauten.

        MfG McNavc

      4. Hi there!

        Und - so ein Pech - der ach-so-tolle IE beherrscht im Gegensatz zu Netscape (seit Version 3, glaube ich) und Mozilla den non-greedy-Operator "?" _nicht_.

        Netscape kann das? Hast Du das ausprobiert? In ihrer Doc auf http://developer.netscape.com/docs/manuals/js/client/jsguide/regexp.htm steht jedenfalls nichts davon.

        So long

        P.S. Vorsicht vor Antje und Marlies! Die sind zur Zeit ziemlich blutruenstig drauf. *g*

        1. Sup!

          Ein Ritter steht zu seinem Wort, und kündet stets die Wahrheit, Tor!

          Nimm' dies!

          <html>
          <script type="text/JavaScript">
          var supi ="aaaaaBaaaaaB";
          var suche = /(.*?B)/;
          suche.exec(supi);
          alert (RegExp.$1);
          </script>
          </html>

          Gruesse,

          Bio

          1. *gaehn* aeh Moin!

            Ein Ritter steht zu seinem Wort, und kündet stets die Wahrheit, Tor!

            Zu zweifeln am ersten Teil ich niemals wagen wuerd'. *g*

            Nimm' dies!
            <html>
            <script type="text/JavaScript">
            var supi ="aaaaaBaaaaaB";
            var suche = /(.*?B)/;
            suche.exec(supi);
            alert (RegExp.$1);
            </script>
            </html>

            Kommt raus: "aaaaaBaaaaaB". Mit /([^B]*B)/ dagegen: "aaaaaB".
            Netscape 4.7 [en].

            So long && May the source be with you

            1. Sup!

              Kommt raus: "aaaaaBaaaaaB". Mit /([^B]*B)/ dagegen: "aaaaaB".
              Netscape 4.7 [en].

              O Nein! O Graus! Welch' ueblen Streich spielt da das Schicksal mir?
              Im Mozilla funktioniert es auf jeden Fall, und ich dachte, in meinem Netscape haette es auch funktioniert...

              Nun denn, testen werde ich, mich melden, wenn die Stunde dazu kommt!

              Gruesse,

              Bio

    2. Hallo,

      Und dann wundern wir uns wieder über Postings wie "ich fragte
      nach Birnen und alle redeten von Äpfeln" [2] ;-)

      Aber um beide zu pflücken braucht man eine Leiter ;)

      gruß
      eric

      1. n'Abend eric !

        Aber um beide zu pflücken braucht man eine Leiter ;)

        Wieso ? Bei uns zu Hause sind die Bäume nicht so hoch. :)

        MfG McNavc