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



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

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

我只想保留最里面的花括号,并用方形刹车代替另一个大括号,所以结果将如下所示:

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

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

这将需要两次替换,首先将每个{替换为[,然后是{,然后将每个}替换为前面带有非单词边界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}]]

在线 C# 演示

您甚至可以使用正面的(?<=})}外观而不是\B}进行第二次替换,但我故意避免使用它以保持解决方案简单,并使其即使对于不支持后视的语言也能工作,但使用(?<=})}将严格优于\B}。随心所欲地选择。

最新更新