Поиск и замена в Visual Studio - PullRequest
27 голосов
/ 21 октября 2011

В Visual Studio, когда я ищу в выделении, я хочу заменить первый экземпляр (или второй, третий и т. Д.) Соответствия на строку, используя регулярные выражения.Как бы я это сделал?

Найдите и замените

foo1 = foo1;
foo2 = foo2;
...
foo20 = foo20;

на следующие.

foo1 = bar1;
foo2 = bar2;
...
foo20 = bar20;

Ответы [ 5 ]

71 голосов
/ 24 июля 2012

В Visual Studio 2012 группы захвата и обратные ссылки используются так же, как в C #.Вы можете захватить их с общими скобками и сделать обратную ссылку на них с $ 0, $ 1 и т. Д. Надеюсь, это поможет!

Обратите внимание, что синтаксис $1 используется для поиска-замены, но \1 используется для обратных ссылокв строке поиска.

33 голосов
/ 21 октября 2011

В Visual Studio 2010 и более ранних версиях , используйте регулярные выражения с обратными ссылками

Регулярные выражения Visual Studio полностью отличаются от того, что я выучил. Мне потребовалось некоторое время, чтобы найти правильный ответ.

Поиск

{foo}{:d+} = \1\2

Заменить на

\1\2 = bar\2

Обратные ссылки сделаны tagging с фигурными скобками {foo}. :d+ то же самое для \d+

Подробнее о VS RegEx можно прочитать здесь

2 голосов
/ 21 октября 2011

Я могу обойтись и без регулярного выражения:

Заменить = foo на = bar.

Если необходимо регулярное выражение, можно использовать:

foo(\d*) = foo(\d*);

Заменить на:

foo\1 = bar\2;
1 голос
/ 29 октября 2015

Вот, введите именно так, как здесь показано

Поиск: (\w+\d+\s*=\s*)[^\d]+(\d+);

Заменить: $1bar$2;


Подробнее: Использование регулярных выражений в Visual Studio

0 голосов
/ 21 октября 2011

Если бы вы были более переменными:

Regex.Replace(input, @"(?<=\= )[^;0-9]*(?=[0-9]*;)", replacewith);

Этот поиск для = и (anynumber); и замены между.

Edit: Номер необязательный.

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