LanX: RegExp: mit $1 und global-flag ersetzen

Hi

Ich moechte ein gefundenes Muster im Ersetzungsstring wiederverwenden
allerdings gleich mit der Option global /g

Perlbeispiel:

$Text = "<i> <a> <o>";
$Text =~ s/<(.)>/[$1]/g;
print "$Text\n";

liefert "[i] [a] [o]"

Javascript allerdings:

Text="<i> <a> <o>" ;
Text=Text.replace( /<(.)>/g , "["+ RegExp.$1 +"]" );
alert(Text)

liefert total chaotische Ergebnisse.

LaeBt man das g weg erhaelt man wenigstens "[i] <a> <o>"

Kein mir jemand nen eleganten Weg nennen wie ich mein Ziel mit "global" erreichen kann
d.h. ohne ne Schleife ueber Einzelersetzungen bauen zu muessen?

Danke
  Rolf

  1. gruss Rolf,

    kann mir jemand 'nen eleganten Weg nennen, wie ich mein Ziel
    mit "global" erreichen kann, d.h. ohne 'ne Schleife ueber
    Einzelersetzungen bauen zu muessen?

    »»

    Danke
    Rolf

    tut mir leid - soweit ich weiss, kommst Du bei der
       von Dir beschriebenen problemstellung nicht um ein
       solches konstrukt herum-(ich lass' mich auch gerne
       eines besseren belehren)

    var text = "<i> <a> <o>";
        var regExpression = /<([^>])>/;
        while (regExpression.test(text)) {
            regExpression.exec(text);
            text = text.replace(regExpression,("["+RegExp.$1+"]"));
        //  alert(text);
        }
        alert(text);

    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:)

    1. Hi Peter

      tut mir leid - soweit ich weiss, kommst Du bei der
         von Dir beschriebenen problemstellung nicht um ein
         solches konstrukt herum-(ich lass' mich auch gerne
         eines besseren belehren)

      Schade! Da zeigt sich wieder was perl eigentlich taugt ...

      var regExpression = /<([^>])>/;

      Aha [^>]* ein Non-Greedy-Konstrukt, das fuehrt  mich auch zu einer anderen Frage
      wie gelingt das bei HTML-Kommentaren, dh wenn's mehrere AbschluBzeichen
      gibt, folgendes waere naemlich leider humbug

      /<!--([^-->]*)-->/

      Kennst du da eine Vorgehensweise?

      Tschau
        Rolf

      PS: Ja ich bastel an 'nen HTML-Parser! :)

      1. hallo again,

        Aha [^>]* ein Non-Greedy-Konstrukt, das fuehrt  mich auch zu einer anderen Frage
        wie gelingt das bei HTML-Kommentaren, dh wenn's mehrere AbschluBzeichen
        gibt, folgendes waere naemlich leider humbug

        /<!--([^-->]*)-->/

        Kennst du da eine Vorgehensweise?

        eine loesung ueber js-RegExp faellt mir da nicht ein -
           konstruier' Dir fuer diesen speziellen fall doch was
           mit "indexOf";

        PS: Ja ich bastel an 'nen HTML-Parser! :)

        du bist krank - gute genesung  ;-)

        ich wuerde gerne den code sehen, wenn Du damit fertig
           bist - wird das ein validierender parser? - einer fuer
           xhtml? - oder sogar fuer "html4/loose.dtd"?

        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:)

        1. hi

          PS: Ja ich bastel an 'nen HTML-Parser! :)

          du bist krank - gute genesung  ;-)

          isch weiß

          ich wuerde gerne den code sehen, wenn Du damit fertig
             bist - wird das ein validierender parser? - einer fuer
             xhtml? - oder sogar fuer "html4/loose.dtd"?

          Validierend nicht wirklich, nicht mehr als Try ...Catch! Der soll auch nur meinen eigenen Code parsen. Und da darf kein ' vorkommen.

          Wenn's läuft mail ich dir.

          tschüß
           rolf