如何搜索不匹配模式的标签

如何搜索不匹配模式的标签

在我的 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 字符都有特殊含义。“非常神奇”
  • @!是一个否定断言
  • .匹配任意字符
  • *匹配任意数量的前一个原子
  • &是布尔逻辑与
  • ()分组为一个原子
  • /是查找命令
  • \是转义字符

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

谢谢@muru

相关内容