我有一系列数字,如下所示。我想将数字组合成4组。有人可以给vim正则表达式吗?
输入:1234 56 7890 1234
输出应为:1234 5678 9012 34
答案 0 :(得分:10)
两遍:
s/ //g
s/\(.\{4\}\)/\1 /g
答案 1 :(得分:4)
我会分两步完成: (1)删除数字组右边的空白
:s/\(\d\+\) /\1/g
(2)分组:
:s/\(\d\{4}\)/\1 /g
如果有很多行记录了一个宏 或对标记区域执行这些步骤。
答案 2 :(得分:4)
你可以一次性完成,但看起来很糟糕:
:s/\(\d\) *\(\d\) *\(\d\) *\(\d\) */\1\2\3\4 /g
虽然这有效,但它相当as。做一个漂亮的双通道解决方案比花费2分钟完成一次通过的Monsteregex™更快。此外,双通解决方案更容易理解。
答案 3 :(得分:1)
:s/\(\d\)\s*\(\d\)\s*\(\d\)\s*\(\d\)\s*/\1\2\3\4 /g
有效,但我更喜欢Autocracy's solution。