2017-06-12 40 views

回答

0

我想,這可能會更容易與其他的方法去做,但你可以使用ex做到這一點,所以在命令行模式,輸入:

:%s/^\([^:]\+\):\([^:]\+\):\([^:]\+\):\([^:]\+\):/\4:\3:\1:\2:/ 

這將爲前4個冒號分隔的字段創建捕獲組,然後以不同於最初存在的順序替換它們。

+0

@ondrej好抓,現在我在這裏修好了 –

0

這裏是一個正則表達式是應該做的,你在找什麼:

newtext = re.sub("([^:]+):([^:]+):([^:]+):([^:]+)(:)?(.*)?",r"\4:\3:\1:\2\5\6",text) 

該帶走的是你要使用parans捕捉,然後按順序重新排列你希望他們在更換。每個捕捉「基團」是隻是一個或多個非:由分隔:如果存在空的組的可能性改變每個+到*

這裏是爲了清楚起見在Python樣品:

import re 

textlist = [ 
"1:2:3:4:5:6:7:8", 
"1:2:3:4:5", 
"1:2:3:4", 
] 


for text in textlist: 
    newtext = re.sub("([^:]+):([^:]+):([^:]+):([^:]+)(:)?(.*)?",r"\4:\3:\1:\2\5\6",text) 
    print (newtext) 

輸出:

4:3:1:2:5:6:7:8 
4:3:1:2:5 
4:3:1:2