Я пытаюсь заменить вхождения имени свойства значением в словаре в C#.C# RegEx Словарь для замещения строк строки
У меня есть следующий словарь:
Dictionary<string, string> properties = new Dictionary<string, string>()
{
{ "property1", @"E:\" },
{ "property2", @"$(property1)\Temp"},
{ "property3", @"$(property2)\AnotherSubFolder"}
};
Где ключ является имя свойства, а значение только строковое значение. Я в основном хочу перебирать значения до тех пор, пока все заданные свойства не будут заменены. Синтаксис аналогичен именам свойств MSBuild.
Это должно в конечном итоге оценить свойство 3 на E: \ Temp \ AnotherSubFolder.
Это поможет, если часть функций RegEx будет работать, в которой я застрял.
Я пробовал редактировать мой регек на REFiddle here.
Следующая регулярное выражение шаблон работает здесь:
/\$\(([^)]+)\)/g
Учитывая текст:
$(property2)\AnotherSubFolder
Он выделяет $ (свойство2).
Однако, поставив это вместе в .NET скрипку, я не получаю никаких совпадений со следующим кодом:
var pattern = @"\$\(([^)]+)\)/g";
Console.WriteLine(Regex.Matches(@"$(property2)AnotherSubFolder", pattern).Count);
который выводит 0.
Я не слишком уверен, почему здесь. Почему мой матч возвращает нулевые результаты?
Я уверен, что вам нужно удалить «/ г», как .Net не видит, что в качестве переключателя, но и как часть шаблона. – juharr
Кроме того, если вы собираетесь тестировать регулярные выражения, которые хотите использовать в .Net, вы должны обязательно использовать инструмент, который на самом деле использует .Net, например http://regexhero.net/. – juharr
Да хороший человек. «/ G» и первый «/» выглядят как оскорбительные шаблоны. Если я их вытащу, теперь я получу матч. Положите это на ответ, и я приму это. – Andez