Globales reguläres Ersetzen für n Treffer

  • Hallo zusammen,

    ich möchte Text variabler Länge beliebigen Inhalts parsen und darin Vorkommen bestimmter Zeichen ersetzen lassen.
    Gaijin meinte, dass ich dabei nicht auf sein XMP-Plugin (%XMP_StrRERepl) zurückgreifen könne, da meine Suchausdrücke zu komplex wären.

    So will ich beispielsweise Bindestriche, sofern sie nicht der Worttrennung dienen, durch Divise (–) ersetzen, als regulären Suchausdruck verwende ich

    Code
    (^\-|(?<=\s)\-)


    Jetzt bin ich zwar in Regulären Ausdrücken oder egrep halbwegs firm, stehe aber mit Ritlabs' Makrosprache auf Kriegsfuß ...
    Wie lässt sich für einen String %_text eine reguläre Ersetzung bei n Treffern in TB! durchführen?

    Code
    %SetPattRegExp='(?m-s)(^\-|(?<=\s)\-)'%-
    %RegExpBlindMatch='%_text%-
    %REM='  ** Und was kommt dann?  ** '%-


    Kann mir irgendwer weiterhelfen?

    Gruß,
    Mikka

  • Du kannst mit RegExp nur suchen. Wenn du nach - suchst, wird dieses einfach nur gefunden.

    Da du beliebig viele - suchen/ersetzen willst, müsstest du das über eine rekursive Schnellvorlage lösen, hab ich selber schon gemacht, aber das ist lange her und wie das geklappt hat, weiß ich selbst nicht mehr :whistling: Im Grunde läuft es darauf hinaus, dass sich eine Vorlage solange selbst aufruft, bis eine Bedingung nicht mehr erfüllt ist, in deinem Fall, dass kein - mehr vorhanden ist.

    Ich hatte gedacht, sowas kann das XMP ?(

  • 'n Abend Bernd!

    Zitat

    Da du beliebig viele - suchen/ersetzen willst, müsstest du das über eine rekursive Schnellvorlage lösen

    Brrr, als ob der Regex-Makro-Einsatz in TheBat! nicht schon frickelig genug ist ...


    Zitat

    Ich hatte gedacht, sowas kann das XMP


    O-Ton Gaijin:

    Zitat

    Die RegEx-Makros in XMP sind als einfachere Alternative zu den langen
    und umständlichen TB!-internen RegExp-Makros gedacht. Für aufwändigere
    Ausdrücke müssen die TB!-Makros verwendet werden.


    Zwar habe ich im Forum einen Wunsch hinterlassen, nur gehe ich selber nicht davon aus, dass Gaijin sich darum kümmern wird; er schrieb:
    "[…] mit RegEx-Makros kenne ich mich auch nicht so aus" und verwies auf "einige Gurus" im "TB!-Forum".

    Hm, ich schätze, er meinte beispielsweise dich, Bernd. ;)


    Nachtrag:
    Für jede reguläre Ersetzungsoperation eine separate Vorlage zu erstellen, die dann aus meiner bestehenden rekursiv abgearbeitet wird, scheint mir enorm aufwändig, alles andere als elegant und performant wohl auch nicht.
    Kennt jemand ein separates TB!-Plugin für reguläre Aufgaben wie diese?

    Einmal editiert, zuletzt von Mikka (12. Dezember 2009 um 23:35) aus folgendem Grund: Frage nach Plugin