Соответствующий текст, окруженный пробелом в vim - PullRequest
2 голосов
/ 19 июля 2011

У меня есть файл с такими строками:

|   hello world   |       foo bar!   |

Я хочу иметь возможность сопоставлять hello world и foo bar!, поэтому я могу, скажем, поменять две фразы, не заботясь о пробеле между фразами и символами канала.

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

:s/| \+\(.*[^ ]\) \+| \+\(.*[^ ]\) \+|/| \2 | \1 |/g

Спасибо!

Ответы [ 2 ]

1 голос
/ 20 июля 2011

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

0 голосов
/ 19 июля 2011

Вы можете использовать магические или очень магические флаги, чтобы использовать меньше косых черт, но это не слишком помогает.

:s/\v\| +(.*[^ ]) +\| +(.*[^ ]) +\|/| \2 | \1 |/g

Если вы заметили, у вас есть одно и то же регулярное выражение дважды подряд (\ | + (. * [^]) +). Вы можете использовать это вместе с {2}, чтобы сделать его короче.

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