我想制定一个正则表达式,匹配一组文件的名称,我想在Vim中批处理,但我发现我似乎无法使用\如预期(正则表达式OR)...Vim正则表达式或在Windows上的文件名模式
具体来说,我想创建一个包含在当前目录下文件的参数列表:
f0148.e, f0149.e, f0150.e ... f0159.e (i.e., 12 files total)
我输入的Vim命令去如下:
:arg f01\(\(4[89]\)\|\(5[0-9]\)\).e
Vim完成此命令时没有任何明显的结果 - 没有消息,输出:args保持不变(不会生成所需的文件名列表)。
如果我分手了正则表达式: :arg f01\(\(4[89]\)\).e
(注:这里留下括号在上面充分体现)
......还有......
:arg f01\(\(5[0-9]\)\).e
...然后:args
产生f0148.e f0149.e
和f0150.e ... f0159.e
(根据需要)。另外,如果我在文本文件中输入上述文件名列表并且使用上述正则表达式作为搜索模式(即,/f01\(\(4[89]\)\|\(5[0-9]\)\).e
),它就按照需要工作。
因此,我确定交替(\|)
在某种程度上导致表达失败。请注意,我在Windows 7上使用Vim,如果这是相关的(因为反斜杠和管道在Windows命令提示符下都是有效的符号)。
一个快速的解决方法是使用:
:arg f014[89].e
:argadd f015[0-9].e
...但我真的想弄清楚如何使上述正则表达式的工作。
感谢您的帮助!
请阅读[如何在Stack Exchange网站上发布代码片段](http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks)。简而言之:突出显示并按下CTRL-K。 – Benoit 2012-01-27 12:30:17
感谢您指出 - 而且这么快! – Mesagoma 2012-01-27 13:56:00