using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
var s = "(Price+Discounted_Price)*2-Max.Price";
var dct = new Dictionary<string, string>();
dct.Add("Price", "A1");
dct.Add("Discounted_Price", "A2");
dct.Add("Max.Price","A3");
var listAbove = new List<string> { "Price", "Discounted_Price", "Max.Price" };
var result = s;
foreach (string phrase in listAbove)
{
result = Regex.Replace(result, @"\b(?<![\w.])" + Regex.Escape(phrase) + @"\b(?![\w.])", dct[phrase]);
}
Console.WriteLine(result);
//var res = Regex.Replace(s, @"(?<![\w.])[\w.]+(?![\w.])",
//x => dct.ContainsKey(x.Value) ? dct[x.Value] : x.Value);
//Console.WriteLine(res);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zOwpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJdmFyIHMgPSAiKFByaWNlK0Rpc2NvdW50ZWRfUHJpY2UpKjItTWF4LlByaWNlIjsKCQl2YXIgZGN0ID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+KCk7CgkJZGN0LkFkZCgiUHJpY2UiLCAiQTEiKTsKCQlkY3QuQWRkKCJEaXNjb3VudGVkX1ByaWNlIiwgIkEyIik7CgkJZGN0LkFkZCgiTWF4LlByaWNlIiwiQTMiKTsKCQl2YXIgbGlzdEFib3ZlID0gbmV3IExpc3Q8c3RyaW5nPiB7ICJQcmljZSIsICJEaXNjb3VudGVkX1ByaWNlIiwgIk1heC5QcmljZSIgfTsKCQl2YXIgcmVzdWx0ID0gczsKCQlmb3JlYWNoIChzdHJpbmcgcGhyYXNlIGluIGxpc3RBYm92ZSkKCQl7CgkJCXJlc3VsdCA9IFJlZ2V4LlJlcGxhY2UocmVzdWx0LCBAIlxiKD88IVtcdy5dKSIgKyBSZWdleC5Fc2NhcGUocGhyYXNlKSArICBAIlxiKD8hW1x3Ll0pIiwgZGN0W3BocmFzZV0pOwoJCX0KCQlDb25zb2xlLldyaXRlTGluZShyZXN1bHQpOwoJCS8vdmFyIHJlcyA9IFJlZ2V4LlJlcGxhY2UocywgQCIoPzwhW1x3Ll0pW1x3Ll0rKD8hW1x3Ll0pIiwgCgkJCS8veCA9PiBkY3QuQ29udGFpbnNLZXkoeC5WYWx1ZSkgPyAgZGN0W3guVmFsdWVdIDogeC5WYWx1ZSk7CgkJLy9Db25zb2xlLldyaXRlTGluZShyZXMpOwoJfQp9