0

所以我有一个长字符串,其中有“保留字”,我需要用它们从数据库中的值替换。

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))";

我不确定为什么模式只会得到单词而不是标签。我应该使用另一个正则表达式但具有特定值吗?拥有特定的保留字在模式中很重要,这就是我使用它的原因,我不确定我在做什么。

任何帮助表示赞赏。谢谢!!!

4

1 回答 1

4

那是因为你没有逃避替换正则表达式中的斜杠

var pattern = @"(("+match.Value+"))";
                ^^               ^^

你不匹配他们,你创建了两个组。尝试这个:

var pattern = @"\(\("+match.Value+"\)\)";
于 2012-04-25T13:16:04.077 回答