Как искать теги не соответствующие шаблону
В моем 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