如何在C#中使用正则表达式进行复杂的替换?

时间:2019-03-16 10:08:46

标签: c# regex

我遇到了一个深嵌套的花括号字符串,如下所示:

{{{text1},{text2}},{{text3},{text4}}}

我只想保留最里面的大括号,然后用方形刹车片替换另一个大括号,所以结果看起来像这样:

[[{text1},{text2}],[{text3},{text4}]]

如何用C#中的Regex.Replace()函数进行此替换? 谢谢

1 个答案:

答案 0 :(得分:2)

这将需要两次替换,首先将每个{替换为[,然后是{,第二次将每个}替换为]通过非单词边界\B。试试这个C#代码,

string input = "{{{text1},{text2}},{{text3},{text4}}}";
Regex regex = new Regex("{(?={)");
string result = regex.Replace(input, "[");
regex = new Regex("\\B}");
result = regex.Replace(result, "]");
Console.WriteLine("Result: " + result);

打印

Result: [[{text1},{text2}],[{text3},{text4}]]

Online C# demo

您甚至可以在(?<=})}后面使用正面外观代替\\B}进行第二次替换,但是我特意避免使用它,以使解决方案保持简单并使其即使对于不支持外观的语言也可以使用但使用(?<=})}会比\\B}更好。根据需要选择。