Philipp Hasenfratz: RegExp...

Halihallo

wiedereinmal eine RegExp, die ich nicht begreif...

ich habe einige Templates in der Form:

blabla <a article="15">hello world</a>

und aus dem sollte etwa folgendes kreiert werden:

blabla <a href="/cgi-bin/CMS/show_article.pl?15">hello world</a>

also soll das Attribut article=15 geändert werden, dass ein CGI Programm dessen Wert bekommt und den entsprechenden Artikel ausgiebt.

weiss grad jemand die Regexp dazu? - ich hab mal folgendes versucht (ohne Erfolg natürlich ;-)) :

$line =~ s/<a article="(.*?)">/
           <a href="/cgi-bin/CMS/show_article.pl?ID=$1">
          /ig;

Danke schon mal

Philipp

  1. kleiner Nachtrag...

    $line =~ s/<a article="(.*?)">/
               <a href="/cgi-bin/CMS/show_article.pl?ID=$1">
              /ig;

    hier fehlten noch einige '', aber funktioniert noch immer nicht:

    $line =~ s/<a article="(.*?)">/
               <a href="/cgi-bin/CMS/show_article.pl?ID=$1">
              /ig;

    Viele Grüsse

    Philipp

    1. Hi Philipp,

      hier fehlten noch einige '', aber funktioniert noch immer nicht:

      Dann setzt noch ein paar mehr ein, dann pascht das...

      So hat's bei mir funktioniert:

      $line =~ s/<a article="(.*?)">/<a href="/cgi-bin/CMS/show_article.pl?ID=$1">/ig;

      (Du hast vergessen, die /'s in der Pfadangabe zu maskieren...)

      Gruss
         Christian

      1. Halihallo Christian

        $line =~ s/<a article="(.*?)">/<a href="/cgi-bin/CMS/show_article.pl?ID=$1">/ig;

        *jep*, that's it ;-)

        (Du hast vergessen, die /'s in der Pfadangabe zu maskieren...)

        bin ich denn von allen guten Göttern verlassen? - Peinlich aber wahr und ich hab's nicht mal gemerkt ;-((((
        ***schäm***

        Vielen Dank

        Philipp

        PS: Jetzt geht ich in meine Ecke und schäme mich zu Tode ;-)

        1. Hi Philipp,

          (Du hast vergessen, die /'s in der Pfadangabe zu maskieren...)

          das ist auch eine Darstellung, bei der man sich schwer tut, noch irgendwas zu erkennen.

          Wenn ich selbst so einen Fall habe, dann versuche ich, beide Pattern separat an lokale Variablen zuzuweisen und dann diese beim Ersetzen zu verwenden:
              my $from = 'pattern_vorher';
              my $to   = 'pattern_nachher';
              $line =~ s/$vorher/$nachher/ig;
          Diese zwei Zeilen zusätzlich ist mir die Sache wert.

          Viele Grüße
                Michael

          1. Halihallo Michael

            (Du hast vergessen, die /'s in der Pfadangabe zu maskieren...)

            Wenn ich selbst so einen Fall habe, dann versuche ich, beide Pattern separat an lokale Variablen zuzuweisen und dann diese beim Ersetzen zu verwenden:
                my $from = 'pattern_vorher';
                my $to   = 'pattern_nachher';
                $line =~ s/$vorher/$nachher/ig;
            Diese zwei Zeilen zusätzlich ist mir die Sache wert.

            Ja, da hast du vollkommen recht. Das mache ich bei grösseren Regexp's auch so, aber dieses (scheinbar) einfache Teil, was ich da zu basteln hatte; hätte nicht gedacht, das mir das so Kopfweh bereiten kann ;-)
            Aber du hast vollkommen recht: Mit den lokalen Variablen wär's wohl gar nicht erst zum Problem geworden.

            Viele Grüsse

            Philipp