在我的 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