2017-06-12 41 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