正则表达式 - 替换字符

时间:2011-11-12 20:50:50

标签: c# .net regex

我的正则表达式有问题。我想替换

$ [.....]到$ {.....}。只有在'{'之前有'$'的地方。

以下代码几乎可以执行我想要的操作:

Regex myRegex = new Regex(@"\$\[[^\]]+", RegexOptions.Multiline);

        string myString = "voici le [contenu] de $[ma chaine de caractères] dans un contexte précis $[pour faire des essais] de remplacement";

        while (myRegex.Match(myString).Success)
        {
            Console.WriteLine(myString);
            Console.WriteLine("");
            string myOudString = myRegex.Match(myString).Value+"]";
            Console.WriteLine("myOudString is " + myOudString);

            string myNewString = myOudString.Replace("[", "{");
            myNewString = myNewString.Replace("]", "}");

            myString = myString.Replace(myOudString, myNewString);
        }

但我对某些字符串有疑问。例如:

string myString = "Here is $[a sample [of] code] to $[replace different] character"

我的代码将返回:

“以下是{{代码} {代码}到$ {替换不同}字符”。

但我想回来:

“这是$ {代码的样本}到$ {替换不同的}字符

我希望有人可以帮助我。

谢谢!

1 个答案:

答案 0 :(得分:2)

为嵌套括号构造“常规”表达式很棘手。

如果你可以假设最多有一个嵌套级别,那么这应该适合你:

myString = Regex.Replace(myString, @"\$\[((?:\[.*?\]|.)*?)\]", "${$1}");