使用正则表达式动态替换值

时间:2013-07-15 08:52:46

标签: .net regex

我有一个像

的网址
http://www.somesite.com/$(someKey).php

我有一个包含这些键的字典,我需要的是使用正则表达式将$(*)替换为用该键标记的字典中的值。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

您可以使用Regex.Replace Method。试试这个:

class Program
{
    static void Main(string[] args)
    {
        var dict = new Dictionary<string, string>();
        dict.Add("someKey1", "MyPage1");
        dict.Add("someKey2", "MyPage2");

        var input = "http://www.somesite.com/$(someKey2).php";
        var output = Regex.Replace(input, @"\$\((.*?)\)", m => 
        {
            return dict[m.Groups[1].Value];
        });
    }
}

答案 1 :(得分:2)

这可能是这样的事情:

url = Regex.Replace(url , @"\$\(([^)]+)\)", delegate(Match m){ return dict[m.Groups[1]]; });