.NET Regex Expression For Find & amp; Замена любого значения ProductName в файле .vdproj в C #
Вопрос
Я пытаюсь написать задачу расширения NAnt, которая может обновлять различные параметры в файле .vdproj, созданном в Visual Studio 2003, и была бы признательна за помощь в следующем.
В частности, я хотел бы использовать выражение RegEx, чтобы найти и, если найдено, заменить любое строковое значение, присвоенное значению ProductName, новым строковым значением в его начале. Р>
Я ищу набор выражений RegEx для изменения " ProductName " к любому другому значению, не полагаясь ни на что, кроме того, что искомая строка начинается с «ProductName» = " 8 " ;: и затем содержит 1 или более символов и заканчивается знаком " отметка. Я пробовал следующее безрезультатно:
Перед выполнением следующего фрагмента кода ProductName файла .vdproj читает:
"ProductName" = "8:My Simple .NET Application"
... и фрагмент кода в C #:
string _theProductName = "My Other Native Application";
Regex productNameExpression = new Regex( @"(?:\""ProductName\"" = \""8:*)" );
_theProjectFileContents =
productNameExpression.Replace(_theProjectFileContents,
"\"ProductName\" = \"8:" + _theProductName + "\"" );
bool updatedProductName =
(_theProjectFileContents.IndexOf(_theProductName) >= 0);
После выполнения вышеуказанного фрагмента кода имя продукта .vdproj теперь выглядит так:
"ProductName" = "8:My Simple .NET Application"My Other Native Application"
Закрыть, но я ожидал " Мое другое родное приложение " заменить " Моё простое приложение .NET " и не добавлять к нему.
Любые идеи и помощь будут с благодарностью.
Решение
Ты почти у цели - пропускаешь только одну.
Измените свое регулярное выражение таким образом, и счастье должно следовать ...
Regex productNameExpression = new Regex(@"(?:\""ProductName\"" = \""8:.*)");
Обратите внимание. после 8: