我的正则表达式有问题。我想替换
$ [.....]到$ {.....}。只有在'{'之前有'$'的地方。
以下代码几乎可以执行我想要的操作:
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"
我的代码将返回:
“以下是{{代码} {代码}到$ {替换不同}字符”。
但我想回来:
“这是$ {代码的样本}到$ {替换不同的}字符
我希望有人可以帮助我。
谢谢!
答案 0 :(得分:2)
为嵌套括号构造“常规”表达式很棘手。
如果你可以假设最多有一个嵌套级别,那么这应该适合你:
myString = Regex.Replace(myString, @"\$\[((?:\[.*?\]|.)*?)\]", "${$1}");