cómo buscar etiquetas que no coincidan con el patrón

cómo buscar etiquetas que no coincidan con el patrón

En mi archivo xml, tengo muchas etiquetas de ubicación. p.ej:

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

Me gustaría encontrar todas las etiquetas de ubicación que no comiencen con file:///home/faizal/Music/. ¿Cómo haría para escribir un comando vim para hacer esto?

El siguiente comando no excluye líneas con el file:///home/faizal/Music/patrón. ¿Qué estoy haciendo mal?

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

Respuesta1

Usar :

/\v(.*\<location\>)&(.*file:\/\/\/home\/faizal\/Music)@!
  • \vsignifica que en el patrón posterior todos los caracteres ASCII excepto '0'-'9', 'a'-'z', 'A'-'Z' y '_' tienen un significado especial. "muy mágico"
  • @!es una afirmación negativa
  • .coincide con cualquier personaje
  • *coincide con cualquier número del átomo anterior
  • &es el booleano AND
  • ()se está agrupando en un átomo
  • /es el comando de búsqueda
  • \es el personaje de escape

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

Gracias @muru

información relacionada