首页 > 解决方案 > 如何删除数字后的字符直到结尾

问题描述

我输入如下

1sum
2subtract
3multipy
4divide
...

预期输出:

1
2
3
4
...

我试过%s/[0-9].*//g 但它正在删除数字我也想保留数字..请帮助

标签: vim

解决方案


您正在匹配所有内容,包括数字本身。

完成您所追求的一个简单方法是使用\D匹配第一个非数字字符,然后删除到行尾:

:%s/\D.*//

请注意,\D这与除了[^0-9]数字之外的任何字符相同,因此将插入符号添加到原始表达式中也可以:

:%s/[^0-9].*//

你不需要/g在最后(即使它没有伤害),因为每行最多可以有一个匹配,因为匹配将一直消耗到行尾。


推荐阅读