用于组合数字的正则表达式

时间:2009-05-26 11:02:14

标签: regex vim

我有一系列数字,如下所示。我想将数字组合成4组。有人可以给vim正则表达式吗?

输入:1234 56 7890 1234

输出应为:1234 5678 9012 34

4 个答案:

答案 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