RegExp: wer versteht replace?
Peter
- webdesign
0 Stefan Muenz0 Peter
0 Tom
Hi Leute,
bin gerade dabei eine Menge Verweise umzuändern. Der Suchmechanismus von Homesite über regular Expressions funktioniert gut. Leider werden jedoch die variablen Bereiche nicht in den replace Mechanismus übernommen.
Z.B.:
Suche in allen Unterordnern:
'href="/+[0-9a-z_]+/index.html" id="cnavi" '
ersetze:
'href="+[0-9a-z_]+/index.html" id="cnavi" '
Ersetzt 1:1 den String in eckigen Klammern.
Was mache ich falsch?
Viele Grüße
Peter
Hallo Peter
bin gerade dabei eine Menge Verweise umzuändern. Der Suchmechanismus von Homesite über regular Expressions funktioniert gut. Leider werden jedoch die variablen Bereiche nicht in den replace Mechanismus übernommen.
Also ich hab mit HomeSite und regulaeren Ausdruecken bei der Suche immer nur Probleme gehabt. Seitdem nehme ich lieber andere Editoren dafuer, die das auch koennen, z.B. Textpad. Oder gleich ein kleines Perl-Script schreiben, damit ist man am flexibelsten ...
viele Gruesse
Stefan Muenz
Hallo Stefan
Oder gleich ein kleines Perl-Script schreiben, damit ist man am flexibelsten ...
Bin in Perl (noch) nicht so fit. Tja, was will man nicht alles lernen!
Könntest Du mir eines von Deinen zuposten: verstehen und ändern kann ich ganz prima ;-)
viele Gruesse
Peter Stadie
Hallo Peter
Könntest Du mir eines von Deinen zuposten: verstehen und ändern kann ich ganz prima ;-)
Ein Beispiel, um eine einzelne Datei zu bearbeiten:
Und ein Beispiel, das *.htm in einem Verzeichnis bearbeitet:
=============================================
#! perl
viele Gruesse
Stefan Muenz
Hallo Peter
'href="/+[0-9a-z_]+/index.html" id="cnavi" '
ersetze:
'href="+[0-9a-z_]+/index.html" id="cnavi" 'Ersetzt 1:1 den String in eckigen Klammern.
Was mache ich falsch?
Versuchs mal mit folgenden REs:
Suchen: href="/([a-zA-Z0-9_]+)/index.html" id="cnavi"
Ersetzen: href="\1/index.html" id="cnavi"
Wichtig ist, dass Du den variablen Teil des RE (der in Replace wieder eingesetzt werden soll) mit Klammern umschliesstt.
Anschliessend kannst Du im Ersetzen-Feld auf jedes Klammmerpaar über \1 (für das 1. Klammerpaar), \2 (für das 2.), usw. zugreifen
Diese nennt man übrigens Backreferences. Mehr dazu findes Du in der Hilfe zu Homesite unter "Using Search and Replace", bzw. "Searching with Regular Expressions".
Grüsse
Tom