Подтвердить что ты не робот

Поиск и замена в Visual Studio

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

Поиск и замена

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

в следующее.

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

Ответ 1

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

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

Поиск

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

Заменить

\1\2 = bar\2

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

Подробнее о VS RegEx здесь

Ответ 2

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

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

Ответ 3

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

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

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

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

Заменить на:

foo\1 = bar\2;

Ответ 4

Так же просто, как в Visual Studio 2019 Найти/Заменить. Мне нужно было заменить строку формата FORTRAN IO на формат C++ и использовать подвыражение и номера регулярного выражения.

Пример: найти: "f9.8", "f18.3" в строке и заменить на% 9.8f,% 18.3f
           reg exp: Find = (f) (\ d+.\d+) Заменить =% $ 2f

Ответ 6

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

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

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

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