Существует ли регулярное выражение для замены ведущих нулей (кроме последнего) и двоеточий в nn: nn: nn.nn в VIM? - PullRequest
2 голосов
/ 04 января 2012

В Vim я открыл файл со следующей структурой:

3677137  00:01:47.04
666239   00:12:57.86
4346     00:00:01.77
418  00:00:00.82
6564     00:00:01.34
1800     00:00:23.93
29208    00:14:23.32

То есть: число, за которым следует вкладка (также может быть пробел, я не думаю, что это имеет значение), а затемвыражением, которое указывает на некоторое количество прошедшего времени в формате HH:MM:SS.cs.(cs означает сентосекунды).

Теперь я хотел бы заменить ведущие нули и двоеточия и нашел следующее регулярное выражение, чтобы сделать именно это:

:%s/\s\@<=[0:]\+//

, что привело к

3677137  1:47.04
666239   12:57.86
4346     1.77
418  .82
6564     1.34
1800     23.93
29208    14:23.32

Это не плохо, и я, вероятно, мог бы жить с этим.Однако, если бы существовало легкое регулярное выражение, чтобы хотя бы одна фигура стояла перед ., я бы, вероятно, был бы еще счастливее.То есть, если четвертая строка гласит

418  0.82

вместо

418  .82

Итак, есть ли регулярное выражение, которое это делает?

Ответы [ 2 ]

2 голосов
/ 04 января 2012

Я бы предложил:

%s/\s\zs[0:]*\ze\d//

Я попробовал это на вашем примере, и он, кажется, делает то, что вы хотите.

1 голос
/ 04 января 2012

Не самый элегантный, но

:%s/\s00:0\?0\?:\?0\?//g
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...