Как вы ссылаетесь на группу захвата с помощью поиска и замены регулярных выражений в Visual Studio 2012, 2013, 2015 и VS Code

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

  • Окружать с {}, отобразить захват с помощью \1,\2,\n

Однако, похоже, это старый метод поиска и замены regex в Visual Studio, и он не работает в VS 2012.

Ответ 1

Чтобы найти и заменить в VS 2012 и VS 2015, вы делаете следующее:

Пример (благодаря syonip)

В параметрах поиска убедитесь, что "использовать регулярные выражения" отмечен, и в качестве текста найдите следующее:

_platformActions.InstallApp\((.+)\)

И в качестве текста для замены:

this.Platform().App($1).Install()

Примечание.. Как отмечает SLaks в комментарии ниже, изменение синтаксиса regex связано с переходом VS2012 на стандартный механизм регулярных выражений .Net.

Примечание.. Другой комментатор отметил, что это также работает в Visual Studio Code (vscode), а также

Ответ 2

Чтобы добавить пример этого, вот что мне нужно сделать в моем коде:

Найти что:

_platformActions.InstallApp\((.+)\)

Заменить на:

this.Platform().App($1).Install()

Это заменяет любой вызов InstallApp (x) с помощью this.Platform(). App (x).Install().

* Не забудьте отметить "Использовать регулярные выражения" в "Параметры поиска"

Ответ 3

Чтобы улучшить ответы выше: Вы должны заменить

_platformActions.InstallApp\((.+)\)

с

this.Platform().App(${1}).Install()

Запомните $ {1}, если хотите добавить число после захвата. $18 попытается вставить 18-й захват поиска, а не первый с добавленным 8.

Ответ 4

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

Найдите что:

_platformActions\.InstallApp\((?<mygroupname>.+)\)

Заменить на:

this.Platform().App(${mygroupname}).Install()