Severin Kacianka: VIM Find and Repalce

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

--
They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.
-- Benjamin Franklin
  1. 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

    1. 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

      --
      They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.
      -- Benjamin Franklin
      1. 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

        --
        sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
        debian/rules
        1. 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

          --
          They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.
          -- Benjamin Franklin
      2. 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

        --
        Warum nennt sich Andreas hier MudGuard?
        Schreinerei Waechter
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. 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

          --
          sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
          debian/rules