como pesquisar tags que não correspondem ao padrão

como pesquisar tags que não correspondem ao padrão

No meu arquivo xml, tenho muitas tags de localização. por exemplo:

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

Gostaria de encontrar todas as tags de localização que não começam com file:///home/faizal/Music/. Como eu escreveria um comando vim para fazer isso?

O comando abaixo não exclui linhas com o file:///home/faizal/Music/padrão. O que estou fazendo de errado?

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

Responder1

Usar :

/\v(.*\<location\>)&(.*file:\/\/\/home\/faizal\/Music)@!
  • \vsignifica que no padrão seguinte todos os caracteres ASCII, exceto '0'-'9', 'a'-'z', 'A'-'Z' e '_', têm um significado especial. "muito mágico"
  • @!é uma afirmação negativa
  • .corresponde a qualquer caractere
  • *corresponde a qualquer número do átomo anterior
  • &é o booleano AND
  • ()está se agrupando em um átomo
  • /é o comando localizar
  • \é o caractere de escape

Referência:http://vimdoc.sourceforge.net/htmldoc/pattern.html,https://stackoverflow.com/questions/3883985/vim-regex-how-to-search-for-a-and-b-not-c

Obrigado @muru

informação relacionada