So suchen Sie nach Tags, die nicht dem Muster entsprechen

So suchen Sie nach Tags, die nicht dem Muster entsprechen

In meiner XML-Datei habe ich viele Standort-Tags. zB:

 <location>file:///home/faizal/Music/THE%20DOORS/Studio%20albums/2007%20Infected%20Mushroom%20Presents%20-%20The%20Doors%20Remixed%20(2%20CD)%20@320/CD2/07%20Break%20on%20Through%20(Infected%20Mushroom%20Guitar%20Rmx).mp3</location>

Ich möchte alle Standort-Tags finden, die nicht mit beginnen file:///home/faizal/Music/. Wie schreibe ich einen Vim-Befehl dafür?

Der folgende Befehl schließt Zeilen mit dem file:///home/faizal/Music/Muster nicht aus. Was mache ich falsch?

/^\(.*\<location\c\>\)\&\(.*file\:\/\/\/home\/home\/faizal\/Music\)\@!

Antwort1

Verwenden :

/\v(.*\<location\>)&(.*file:\/\/\/home\/faizal\/Music)@!
  • \vbedeutet, dass im darauffolgenden Muster alle ASCII-Zeichen außer '0'-'9', 'a'-'z', 'A'-'Z' und '_' eine besondere Bedeutung haben. "very magic"
  • @!ist eine negative Aussage
  • .passt zu jedem Zeichen
  • *entspricht einer beliebigen Nummer des vorherigen Atoms
  • &ist das boolesche UND
  • ()gruppiert sich zu einem Atom
  • /ist der Find-Befehl
  • \ist das Escape-Zeichen

Referenz :http://vimdoc.sourceforge.net/htmldoc/pattern.html,https://stackoverflow.com/questions/3883985/vim-regex-wie-sucht-man-nach-a-und-b-nicht-c

Danke @muru

verwandte Informationen