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)@!
\v
bedeutet, 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