2014-09-30 63 views
0

我有一個數據的大文件格式如下:VIM比賽組號碼並更換

regabc123456_user_domain_application_env_id 
regdef789101_user_domain_application_env_id 

在vim我想做一個搜索和替換(「_」爲「」),並匹配機器名稱(regabc123456)。 我試圖這樣的:「*」

:%s/^reg.*\{6}_/^reg.*\{6},\ /g 

^爲線「章」的開始,因爲開始時都這樣則以後什麼,但前6位數字代碼開始對此我tryign趕上與{6}。

這似乎沒有做我想做的事。我可以匹配機器名稱,但我無法用我想要的替換它。有沒有更容易的方法來識別正則表達式的機器名稱?例如:

'reg'後跟三個小寫字母后跟六個數字後跟一個下劃線,然後替換?

謝謝。

回答

1

下面的正則表達式將取代regabc123456_regabc123456,

:%s/^\(reg.*[0-9]\{6\}\)_/\1,/g 

OR

:%s/^\(reg[a-z]\{3\}[0-9]\{6\}\)_/\1,/g 

如果你想有一個空格之後逗號然後更換零件逗號後添加空間。

%s/^\(reg[a-z]\{3\}[0-9]\{6\}\)_/\1, /g 

要匹配6位數字,您需要使用[0-9]\{6\}。它重複前一個標記正好6次。

+0

這就像一個魅力!謝謝。 我的問題是(),我不知道「\ 1」。 我假設\ 1增加了第一個()組中匹配的東西? 順便說一句,似乎「\ {3 \}」和「\ {3}」工作。 – Eric 2014-09-30 04:50:01