所以我有一个很长的字符串,我有“保留字”,我需要用db中的值替换它。
eg.
string text = "You're salary for the month of ((month)) is ((salary))
现在我做的是匹配每个保留字,然后搜索我的数据集,然后用它们的值替换那些
Regex ex = new Regex(@"(?<=\(\().*?(?=\)\))");
foreach(Match match in ex.Matches(body)){
string valuefromset = values.FirstOrDefault(val => val.Variable == match.Value).Value;
var pattern = @"(("+match.Value+"))";
body = Regex.Replace(body, pattern, valuefromset, RegexOptions.IgnoreCase);
}
}
现在发生了什么
text = "You're salary for the month of ((April)) is (($10000))";
我不确定为什么模式会得到单词而不是标签。我应该使用另一个正则表达式但具有特定值吗?具有特定保留字在我使用它的模式中是重要的,并不确定我在做什么。
感谢任何帮助。感谢!!!
答案 0 :(得分:4)
那是因为你没有逃避替换正则表达式中的斜杠
var pattern = @"(("+match.Value+"))";
^^ ^^
你没有匹配它们,你创建了两个组。试试这个:
var pattern = @"\(\("+match.Value+"\)\)";