Kristin: regulärer Ausdruck

Hi!

ich möchte ein Text per regulären Ausdruck ersetzen. jetzt scheint der reguläre Ausdruck falsch zu sein, da nichts ersetzt wird.

Text = Text.replace("/export.py:-\S+\+-defg:/", "export.py:-abc+-defg:");

da wo \S ist, dürfen eigentlich nur kleine Buchstaben stehen.
Unter Syntax regulärer Ausdrücke werde ich nicht ganz fündig, wie man [a-z]+ schreiben muss

"export.py:-abc+-defg:" sollte so bleiben
"export.py:-bcd+-defg:" sollte zu "export.py:-abc+-defg:" ersetzt werden.

wenn ich es so schreibe
Text = Text.replace("export.py:-bcd+-defg:", "export.py:-abc+-defg:");
wird der Teil ersetzt, jedoch sollte es auch mit bbb etc. funktionieren.

Wäre super, wenn mir jemand den entscheidenden Tipp geben könnte.

Kristin

  1. n'abend,

    Text = Text.replace("/export.py:-\S+\+-defg:/", "export.py:-abc+-defg:");

    Du solltest bei Regexen möglichst ein paar Beispiel Eingabe- und Ausgabewerte liefern. Zu dem sind die Anführungszeichen nicht nur unnötig, sondern auch der Fehler, warum dein RegExp überhaupt nicht ausgeführt wird.

    da wo \S ist, dürfen eigentlich nur kleine Buchstaben stehen.

    Laut von dir verlinkter Doku-Seite:
    \S findet ein beliebiges einzelnes Zeichen, das kein "Whitespace" ist, also kein \f\n\t\v und kein Leerzeichen.

    ist übrigens auch kein Whitespace, wird also von \S gematcht, ist aber vermutlich nicht das was du da haben willst...

    Unter Syntax regulärer Ausdrücke werde ich nicht ganz fündig, wie man [a-z]+ schreiben muss

    [a-z] beschreibt die geforderte Zeichenmenge doch eindeutig. Es gäbe noch \w, aber das umfasst alle alphanumerischen Zeichen, inklusive dem Unterstrich.

    "export.py:-abc+-defg:" sollte so bleiben
    "export.py:-bcd+-defg:" sollte zu "export.py:-abc+-defg:" ersetzt werden.

    "export.py:-bcd+-defg:".replace( /(export.py:-)([a-z]+)(\+-defg:)/, "$1abc$3" );
    Siehe den Abschnitt Backreferences.

    weiterhin schönen abend...

    --
    #selfhtml hat ein Forum?
    sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
    1. Hi!

      "export.py:-bcd+-defg:".replace( /(export.py:-)([a-z]+)(\+-defg:)/, "$1abc$3" );
      Siehe den Abschnitt Backreferences.

      nachdem ich noch etwas weiter gegoogelt hatte, hatte ich auch gemerkt, dass die Anführungszeichen falsch sind.
      Ich war gerade dabei eine Antwort zu posten, jedoch kamst du mir zuvor :-)

      Meine Lösung sah wie folgt aus
      Text = Text.replace(/export.py:-[a-z]+\+-defg:/", "export.py:-abc+-defg:");

      Haben die Backreferenzen Vorteile bei diesem Szenario?

      Kristin

      1. n'abend,

        Meine Lösung sah wie folgt aus
        Text = Text.replace(/export.py:-[a-z]+\+-defg:/", "export.py:-abc+-defg:");

        außer, dass da ein Anführungszeichen zu viel ist, schaut das schon besser aus.

        Haben die Backreferenzen Vorteile bei diesem Szenario?

        Jein. Backreferences machen dann Sinn, wenn auch deren Inhalt veränderlich ist. Das ist hier aber nicht der Fall. Vermutlich verbraucht das ganze Backreferencing in deinem Fall unnötige Leistung.

        weiterhin schönen abend...

        --
        #selfhtml hat ein Forum?
        sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|