В моем 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» и «_», имеют особое значение. «очень волшебно»@!
является отрицательным утверждением.
соответствует любому символу*
соответствует любому числу предыдущего атома&
это логическое И()
группируется в атом/
это команда find\
это экранирующий символ
Ссылка :http://vimdoc.sourceforge.net/htmldoc/pattern.html,https://stackoverflow.com/questions/3883985/vim-regex-how-to-search-for-a-and-b-not-c
Спасибо @muru