Поиск и замена в Visual Studio
В Visual Studio, когда я просматриваю выбор, я хочу заменить первый экземпляр (или второй, третий и т.д.) совпадения на строку с использованием регулярных выражений. Как мне это сделать?
Поиск и замена
foo1 = foo1;
foo2 = foo2;
...
foo20 = foo20;
в следующее.
foo1 = bar1;
foo2 = bar2;
...
foo20 = bar20;
Ответы
Ответ 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
Ответ 5
Вот он, введите точно так, как он отображается здесь
Поиск: (\w+\d+\s*=\s*)[^\d]+(\d+);
Заменить: $1bar$2;
Подробнее: Использование регулярных выражений в Visual Studio
Ответ 6
Если вы были бы более переменными:
Regex.Replace(input, @"(?<=\= )[^;0-9]*(?=[0-9]*;)", replacewith);
Этот поиск для =
и (anynumber);
и замените это.
Edit:
Номер необязателен.