VIM Find and Repalce
Severin Kacianka
- software
Hallo,
ich versuche gerade mit VIM alle onmouseover und onmouseout Attrubute aus einer HTML-Datei zu entfernen. Ich habe es mit folgendem Kommando versucht:
:%s/onmouseover="*"//gc
aber dies liefert mir immer nur den Teil bis nach dem eröffnenden Anführungszeichen.
Aus dem String onmouseover="hideSub()" wird nur onmouseover=" ersetzt.
Versuche wie :%s/onmouseover="[\w]*"//gc treffen gar nicht.
Für gute RTFM Links bin ich besonders dankbar :-)
Gruß,
Severin
Hallo Severin
:%s/onmouseover="*"//gc
ich würde es so probieren:
:%s/onmouseover="[^"]+"//gc
Die Hochkommata sind nicht escaped, sondern normales Zeichen. Warum die eckigen Klammern nicht escaped werden dürfen, das + aber schon, weiss ich selber auch nicht.
Jetzt musst Du bloss noch entscheiden, was Du mit den doppelten Spaces macht, die bis jetzt entstehen.
Gruß
Olaf
Hallo Olaf,
:%s/onmouseover="[^"]+"//gc
Es funktioniert, danke!
Aber warum muss ich es so umständlich formulieren?
Ich habe versucht zu sagen: "Ersetze jeden String der mit onmouseover=" beginnt, dann belibige Zeichen enthält und mit " endet".
Du hast gesagt: Ersetze jeden String der mit onmouseover=" beginnt, dann belibige Zeichen,außer " enthält und mit " endet".
Wahrscheinlich werde ich Reguläre Ausdrücke nie verstehen :-/
Jetzt musst Du bloss noch entscheiden, was Du mit den doppelten Spaces macht, die bis jetzt entstehen.
Ich glaube ich lasse sie einfach drin :-)
Gruß,
Severin
Hallo Severin.
:%s/onmouseover="[^"]+"//gc
Es funktioniert, danke!
Aber warum muss ich es so umständlich formulieren?
Ich habe versucht zu sagen: "Ersetze jeden String der mit onmouseover=" beginnt, dann belibige Zeichen enthält und mit " endet".
Ja, „"“ ist ja auch ein beliebiges Zeichen. Daher trifft der Ausdruck auch hierauf zu, ist somit zu gierig und findet niemals das abschließende „"“.
Einen schönen Samstag noch.
Gruß, Mathias
Hallo,
Ja, „"“ ist ja auch ein beliebiges Zeichen. Daher trifft der Ausdruck auch hierauf zu, ist somit zu gierig und findet niemals das abschließende „"“.
Danke - ich glaube du hast mir jetzt eine lange gesuchte Tür zu Regulären Ausdrücken gezeigt und aufgeschlossen.
Gruß,
Severin
Hi,
Ich habe versucht zu sagen: "Ersetze jeden String der mit onmouseover=" beginnt, dann belibige Zeichen enthält und mit " endet".
Aber Du hast gesagt: (:%s/onmouseover="*"//gc)
ersetze onmouseover= gefolgt von 0 bis unendlich Anführungszeichen gefolgt von einem Anführungszeichen.
* steht nicht für beliebige Zeichen, sondern für beliebige Anzahl Vorkommen des vorhergehenden Teils des Ausdrucks.
Wahrscheinlich werde ich Reguläre Ausdrücke nie verstehen :-/
Ich empfehle "Mastering Regular Expressions" von Jeffrey E.F. Friedl, O'Reilly-Verlag.
Nicht billig, aber preiswert.
cu,
Andreas
Hallo MudGuard.
Aber Du hast gesagt: (:%s/onmouseover="*"//gc)
ersetze onmouseover= gefolgt von 0 bis unendlich Anführungszeichen gefolgt von einem Anführungszeichen.
* steht nicht für beliebige Zeichen, sondern für beliebige Anzahl Vorkommen des vorhergehenden Teils des Ausdrucks.
In der Tat. Da habe ich fehlgelesen.
Einen schönen Samstag noch.
Gruß, Mathias