Справка по поиску и замене регулярных выражений в Visual Studio - PullRequest
38 голосов
/ 24 января 2010

Я хотел бы заменить некоторые операторы присваивания, такие как:

int someNum = txtSomeNum.Text; 
int anotherNum = txtAnotherNum.Text;

с

int someNum = Int32.Parse(txtSomeNum.Text);
int anotherNum = Int32.Parse(txtAnotherNum.Text);

Есть ли хороший способ сделать это с помощью функции поиска и замены в Visual Studio, используя регулярные выражения? Я не уверен, что такое регулярное выражение.

Ответы [ 4 ]

59 голосов
/ 24 января 2010

Я думаю, в Visual Studio вы можете пометить выражения с помощью фигурных скобок {txtSomeNum.Text}. Затем при замене вы можете обратиться к нему с помощью \1. Таким образом, строка замены будет выглядеть примерно так: Int32.Parse(\1).


Обновление: через @ Timothy003

VS 11 устраняет синтаксис {} \ 1 и использует () $ 1

7 голосов
/ 03 августа 2010
6 голосов
/ 24 января 2010

Это то, что я искал:

Найти: = {. * \. Текст}

Заменить: = Int32.Parse (\ 1)

2 голосов
/ 15 февраля 2012

Лучшее регулярное выражение для исходной задачи будет

найти expr .: {: i \ .Text}

заменить expr .: Int32.Parse (\ 1)

Выезд: http://msdn.microsoft.com/en-us/library/2k3te2cs%28v=vs.100%29.aspx

для окончательного руководства по регулярным выражениям в VS.

Я недавно завершил переформатирование проекта другого программиста на C ++ из ада. Он полностью и произвольно ввел или пропустил произвольно пробелы и символы табуляции, отступы (или нет) и уровень вложенности скобок безумный , так что никто из нас не использовал кодирование стандартов любого типа. даже начать читать код, прежде чем я начал. Регулярно используется регулярное выражение для поиска и исправления аномальных конструкций. За пару часов я смог исправить основные проблемы примерно в 125 000 строк кода, фактически не рассматривая большинство из них. В одном конкретном поиске / замене я изменил более 22 000 строк кода в 125 файлах, общее время меньше 10 секунд.

Особенно полезные конструкции в регулярном выражении:

: b + == одна или несколько пробелов и / или вкладок.

: i == соответствует имени или ключевому слову переменной в стиле C (то есть, если, если, pick3, bNotImportant)

: Wh == символ пробела; не просто пусто или вкладка

: Sm == любой из арифметических символов (+, -,>, = и т. Д.)

: Pu == любой знак пунктуации

\ n == разрыв строки (полезно для нахождения, где он вставил 8 или 10 пустых строк)

^ == соответствует началу строки ($ соответствует концу)

Хотя было бы неплохо соответствовать некоторому другому стандарту регулярных выражений (duh), я нашел ряд расширений MS, чрезвычайно полезных для поиска в кодовой базе, таких как отсутствие необходимости определять «идентификатор» сотни раз как « [A-Za-z0-9] + ", вместо этого просто используя": i ".

...