3

csv ファイルの各行の最初のコンマまですべてを削除しようとしています。行は次のようになります。

-29.45829963684082~149.14680480957031,-000029.45829963684082, 000149.14680480957031,WGS84
-29.46190071105957~149.09509277343750,-000029.46190071105957, 000149.09509277343750,WGS84

実行する%s/.*,\\{-}//とすべてが削除されます!

私が使用する%s/.*,//と、私が期待する WGS84 以外のすべてが削除されます。

誰が私が間違っているのか教えてもらえますか? \{-}Vim では非貪欲なマッチングが課せられていると思いました。

ありがとう、

ジョン

4

4 に答える 4

3

[^,]*の代わりに使用し.*ます。これにより、正規表現はコンマに対して非貪欲になります。

バリアントが機能しない理由に関しては、正規表現のオブジェクトが間違っているようです。{-}同等であるはず*ですが、貪欲ではなく、可能な限り吸い込むことにすでに慣れています。*また、バックスラッシュが多すぎます。試す:

:%s/.\{-},//

代わりは。

テスト入力でそれを行うと、次のようになります。

-000029.45829963684082, 000149.14680480957031,WGS84
-000029.46190071105957, 000149.09509277343750,WGS84

予想通り。

于 2012-09-07T01:43:19.910 に答える
3

\{-}は Vim の非貪欲なマッチングであるため、\{-}代わりに を使用する必要があり*ます。

試す:

%s/.\{-},//
于 2012-09-07T01:46:00.970 に答える
2

もう1つの方法は、グローバルコマンドを使用することです。

:g//normal dt,
于 2012-09-07T01:49:15.570 に答える
1

これがあなたがする必要があることです

%s/[^,]*//
于 2012-09-07T01:45:44.000 に答える