Как сопоставить пробел между двумя строками в vim? - PullRequest
0 голосов
/ 02 июня 2018
4250682 orderNumber: 60360981400                         orderID:4250682 

Могут быть пробелы или табуляция между "60360981400" и "orderID".Как сопоставить эти пробелы и заменить их только одним пробелом?

orderNumber:\d\+.*orderID 

Это может соответствовать шаблону.Но как заменить '. *' Одним пробелом?

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Если вы хотите сопоставить только часть выражения регулярного выражения, вы можете использовать выражения \zs (начало совпадения) и \ze (конец совпадения): совпадающая часть до \zs и после \zeбудет отброшен, поэтому внутреннее совпадение будет заменено:

s/orderNumber: \d\+\zs.*\zeorderID/ /

Дополнительные сведения см. в :help \zs.

0 голосов
/ 04 июня 2018

Чтобы заменить все экземпляры последовательных пробелов одним пробелом, вы можете использовать метасимвол пропуска \s, как в :s/\s\+/ /g.

Или просмотреть группировку и обратные ссылки: :s/\(orderNumber: \d\+\).*\(orderID\)/\1 \2/

http://vimregex.com/ объяснит все вышеперечисленное и многое другое.

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