Vim中的正则表达式:找不到前五位数行

时间:2016-01-11 16:26:38

标签: regex vim

我正在尝试使用正则表达式在Vim中工作,但我似乎无法正确使用它。我需要在一个文件上运行它,该文件有太多的行可供Sublime或Atom处理。

这只是查找每行前五位数的一部分。

^(\d{5})

在Vim中,我尝试运行以下内容但没有匹配。我尝试了一些变化,但无法做到正确。我做错了什么?

:%s /(\d\{5})/

4 个答案:

答案 0 :(得分:3)

您只需要逃避()。与其他正则表达式不同,Vim正则表达式使用()作为字面括号,当您将它们转义时,它们将被视为分组构造。

4.5 Grouping and Backreferences

  

您可以使用"\(""\)"对模式表达式的部分内容进行分组,并使用特殊编号\1, \2 ... \9在替换模式中引用它们。

答案 1 :(得分:0)

Search and replace - vim.wikia

  

搜索时:

     

+,?,|,&,{,(,和)必须转义才能使用其特殊功能。

从技术上讲,你的命令应该是

:%s /\(\d\{5\}\)/

答案 2 :(得分:0)

:%s/\v^(\d{5})/The first 5 digits are \1/

考虑:help magic因为如果你来自不同语言的regexing,则需要转义不同的内容。

此外,请记住,您可以使用/?set hlsearch上的hlsearch匹配来测试您的正则表达式。突出显示搜索可帮助您确定正则表达式在您构建正则表达式时突出显示的确切位置。

正确使用正则表达式后,按Enter键应用它,进入%s交换的命令模式,然后使用CTRL+R选择注册表,然后/放入搜索刚测试过的。

答案 3 :(得分:0)

我认为你正在寻找非常神奇的东西。

:%s /\v/(d(5))/<replacement>/<flags>

希望这有帮助