Vim 非贪婪搜索
我试图删除csv文件中每行第一个逗号之前的所有内容。 这些线条如下:Vim 非贪婪搜索,vim,Vim,我试图删除csv文件中每行第一个逗号之前的所有内容。 这些线条如下: -29.45829963684082~149.14680480957031,-000029.45829963684082, 000149.14680480957031,WGS84 -29.46190071105957~149.09509277343750,-000029.46190071105957, 000149.09509277343750,WGS84 当我执行%s/*,\\{-}/时,它会删除所有内容 如果我使用%s/
-29.45829963684082~149.14680480957031,-000029.45829963684082, 000149.14680480957031,WGS84
-29.46190071105957~149.09509277343750,-000029.46190071105957, 000149.09509277343750,WGS84
当我执行%s/*,\\{-}/
时,它会删除所有内容
如果我使用%s/*,//
它会删除除WGS84之外的所有内容,这是我所期望的
谁能告诉我我做错了什么?我认为\{-}
在Vim中强加了非贪婪匹配
谢谢
John我会用
[^,]*
而不是*
。这将使你的正则表达式不贪吃逗号
关于你的变体不起作用的原因,你的正则表达式中的对象似乎是错误的{-}
应该等同于*
但不是贪婪的,而且你已经习惯了*
尽可能多地吸吮。你的反斜杠也太多了。尝试:
:%s/.\{-},//
相反
当我对您的测试输入执行此操作时,我得到:
-000029.45829963684082, 000149.14680480957031,WGS84
-000029.46190071105957, 000149.09509277343750,WGS84
正如所料。以下是您需要做的
%s/[^,]*//
\{-}
是Vim中的非贪婪匹配,因此应该使用\{-}
而不是*
尝试:
另一种方法是使用global命令
:g//normal dt,
@康纳:哦,哇。我从来没有意识到:)从现在起我就这么用它@sehe退房::-)@康纳加。我会用
:g/^/t.
而不是那里的:%norm Yp
。当然,8@:
从那里以指数级增长文件:)@sehe是的,这不太实用。。。很有趣。那篇文章是在他的背景下写的。
:g//normal dt,