2013-02-15 2 views
2

Я работаю на довольно большой проект (C#) и с места на место у меня есть фрагменты, которые выглядит следующим образом:Visual Studio регулярное выражение заменить повторен захвата группы

((int)foo).ToString() + "," + ((int)bar).ToString() + "," + ((int)zig).ToString() + ... 

Запятая разделителями строка имеет произвольную длину (средний диапазон от 1 до 5, но я не уверен, есть ли еще). до сих пор я в состоянии найти все вхождения я хочу с помощью:

\({.+}\).ToString\(\)(*\+ *"," *\+ *\({.+}\).ToString\(\))* 

теперь для каждого вхождения Я хочу, чтобы заменить его чем-то вроде этого:

{ (int)foo, (int)bar, (int)zig , ...} 

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

Благодаря

ответ

0

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

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

+0

Hi Ulises, Спасибо, что ответили. проблема заключается в том, что длина строки с разделителями-запятыми произвольная. Я попытался заменить совпадения с этим регулярным выражением: \ {\ 1, \ 2 * \} , однако звездочка была закодирована в целых массивах. выровненный теперь выглядит примерно так: {(int) foo, *} –

+0

Do 2 find and replace, one for \ ({. +} \) ToString \ (\), затем еще один для \ + * ", "* \ + – Ulises

+0

Спасибо, это помогло много –

0

I может быть недоразумением вашего вопроса, но это звучит, как вы уже получили ответ на свой вопрос. .. Используйте System.Text.RegularExpressions.Regex.Replace(string, string). Если вам нужен мелкозернистый элемент управления, рассмотрите обертывание ваших захватов именами: \((?<foo>.+)\) (или используйте индексы). С помощью этих захватов вы можете выполнять замену вручную, если необходимо, путем прокрутки совпадений, а затем итерации по захватам.

+0

Hi RayB64, Спасибо, что ответили. Я пытаюсь использовать инструмент поиска и замены в Visual Studio, и проект написан на C#, не используя C# для поиска и замены –

 Смежные вопросы

  • Нет связанных вопросов^_^