我想制定一個正則表達式,匹配一組文件的名稱,我想在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