如何搜尋與模式不符的標籤

如何搜尋與模式不符的標籤

在我的 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表示在其後面的模式中,除了 '0'-'9'、'a'-'z'、'A'-'Z' 和 '_' 之外的所有 ASCII 字元都具有特殊意義。 “非常神奇”
  • @!是一個否定的斷言
  • .匹配任何字符
  • *匹配任意數量的前一個原子
  • &是布林值 AND
  • ()組合成一個原子
  • /是查找指令
  • \是轉義字符

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

謝謝@muru

相關內容