Как получить длину соответствия регулярному выражению в vim? - PullRequest
3 голосов
/ 07 апреля 2010

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

^\(\-\+\s\)\+

Я пытаюсь изменить ширину столбцов в буферес данными, которые изложены в виде таблицы.Поскольку первые две строки таблицы будут выглядеть следующим образом:

 DESIGN_ID DESIGN_YEAR SOURCE_REFERENCE
---------- ----------- ----------------

Я хочу использовать регулярное выражение, чтобы найти текущую ширину каждого столбца.

1 Ответ

5 голосов
/ 07 апреля 2010

Ну, как вы хотите захватить его?

Это поместит его в начало всех соответствующих строк:

:%s/^-\+\%(\s-\+\)*\s\?$/\=strlen(submatch(0)) . ': '. submatch(0)

\= позволяет заменить результатвыражение vimscript для соответствующей строки.submatch(0) соответствует строке (submatch(n) будет n-й группой).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...