使用Regex解析和替换字符串

时间:2010-03-16 15:25:23

标签: c# regex

我有各种各样的字符串:

$(gateway.jms.jndi.ic.url,0,tibjmsnaming, tcp)/topic/$(gateway.destination.prefix)$(gateway.StatusTopicName),$(gateway.jms.jndi.ic.username),$(gateway.jms.jndi.ic.password),abinding,tBinding

我正试图找出一种方法来提取$(...)部分并用其他字符串替换它们。

无论如何在C#中解析这些组并逐个替换另一个字符串?

由于

2 个答案:

答案 0 :(得分:5)

这个正则表达式将捕获这些部分:

  

\$\([^)]+\)

然后像这样替换(这个例子将每个匹配改为它的大写等价物 - 你可以添加你想要的任何自定义逻辑):

Regex.Replace(candidate, @"\$\([^)]+\)", delegate(Match m) {
    return m.ToString().ToUpper();
});

答案 1 :(得分:0)

我对委托不太好。这是我用安德鲁的正则表达式想出来的:

string test1 = @"$(gateway.jms.jndi.ic.url,0,tibjmsnaming, tcp)/topic/$(gateway.destination.prefix)$(gateway.StatusTopicName),$(gateway.jms.jndi.ic.username),$(gateway.jms.jndi.ic.password),abinding,tBinding";

            string regex1 = @"\$\([^)]+\)";

            var matches = Regex.Matches(test1, regex1);

            Console.WriteLine(matches.Count);
            foreach (Match match in matches)
            {
                test1 = test1.Replace(match.Value, "your String");                  
            }
            Console.WriteLine(test1);