Regex 组合所有项的vim正则表达式

Regex 组合所有项的vim正则表达式,regex,vim,Regex,Vim,我有一个以下格式的文件 1 2472 1 664 2 2600 10 4135 10 5606 ... 我想把它转换成 1 2472 664 2 2600 10 4135 5606 ... 使用多行支持,您可以使用: ^(\d+) (\d+)$[.\s]+?^\1 (\d+) 在电视上看 其思想是使用反向引用来匹配两行 在vim的语法中,您可以编写如下: :%s/\_^\(\d*\) \(\d*\)\_$\_.*\_^\1 \(\d*\)/\1 \2 \3/ 使用多行支持,您可以使用:

我有一个以下格式的文件

1 2472
1 664
2 2600
10 4135
10 5606
...
我想把它转换成

1 2472 664
2 2600
10 4135 5606
...

使用多行支持,您可以使用:

^(\d+) (\d+)$[.\s]+?^\1 (\d+)
在电视上看

其思想是使用反向引用来匹配两行

在vim的语法中,您可以编写如下:

:%s/\_^\(\d*\) \(\d*\)\_$\_.*\_^\1 \(\d*\)/\1 \2 \3/

使用多行支持,您可以使用:

^(\d+) (\d+)$[.\s]+?^\1 (\d+)
在电视上看

其思想是使用反向引用来匹配两行

在vim的语法中,您可以编写如下:

:%s/\_^\(\d*\) \(\d*\)\_$\_.*\_^\1 \(\d*\)/\1 \2 \3/

您可以通过执行以下命令来组合项目:

:%s/\v(\d+\s)(.*\n\1.*)+/\=substitute(submatch(0),'\n'.submatch(1),' ','g')/

您可以通过执行以下命令来组合项目:

:%s/\v(\d+\s)(.*\n\1.*)+/\=substitute(submatch(0),'\n'.submatch(1),' ','g')/

我对你的职位投了反对票。至少试着测试一下你的解决方案。我用vim版本7.3.547测试了它,它运行正常。您对哪个版本有异议?您的解决方案仅适用于您的意思是OP没有限制项目数+
!我对你的职位投了反对票。至少试着测试一下你的解决方案。我用vim版本7.3.547测试了它,它运行正常。您对哪个版本有异议?您的解决方案仅适用于您的意思是OP没有限制项目数+
!我刚刚创造了一个高尔夫挑战赛。让我们看看人们能想出多少新方法。url:我刚刚创建了一个vimgolf挑战赛。让我们看看人们能想出多少新方法。网址: