2011-02-01 54 views
0

我有數據格式爲:如何使用vi(m)找到並替換部分文本?

03/18/2010 
03/18/2010 
04/19/2010 

我想今年從每個日期字符串的結尾移動,一開始,像這樣:

2010/03/18 
2010/03/18 
2010/04/19 

我需要查找/替換模式,將做到這一點。我以爲我可能需要使用這樣的符號:

:%s/'[0-9]\{2\}'\/'[0-9]\{2\}'\/'[0-9]\{4\}'/&3\/&1\/&2/ 

或沿着這些路線,但我只是不確定。此搜索/替換可能嗎?如果是這樣,有人會如此善待啓迪我嗎?

回答

3

當然這是可能的。

:%s+\([0-9]\{2\}\)/\([0-9]\{2\}\)/\([0-9]\{4\}\)+\3/\1/\2+ 

我改變了以下內容:

  • 代替使用斜線來替換命令的各部分之間分離的,我用+符號。分隔符不一定是正斜槓。無論您在%s成爲分隔符後放入哪個符號。這很有用,因爲我們需要在模式中使用正斜槓。

  • 我使用(轉義)括號在正則表達式中創建組。這讓我們可以通過使用反斜槓後面跟隨組的編號來引用替換模式中的這些組。組從左到右編號,從1開始,組0是整個比賽。

+0

這是完全真棒,謝謝。我在沒有任何運氣的情況下搜索了一個小時或更長時間。再次感謝。 – Brian 2011-02-01 16:11:29