Как искать теги не соответствующие шаблону

В моем XML-файле у меня есть много тегов местоположения. например:

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

Я хотел бы найти все теги местоположения, которые не начинаются с file:///home/faizal/Music/, Как мне написать команду vim для этого?

Команда ниже не исключает строки с file:///home/faizal/Music/ шаблон. Что я делаю неправильно?

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

1 ответ

Решение

Используйте:

/\v(.*\<location\>)&(.*file:\/\/\/home\/faizal\/Music)@!
  • \v означает, что в шаблоне после него все символы ASCII, кроме "0" - "9", "a" - "z", "A" - "Z" и "_", имеют особое значение. "очень волшебно"
  • @! это негативное утверждение
  • . соответствует любому персонажу
  • * соответствует любому номеру предыдущего атома
  • & это логическое И
  • () группируется в атом
  • / это команда поиска
  • \ это побег персонаж

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

Спасибо @muru

Другие вопросы по тегам