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

如何在C#中使用正则表达式进行复杂的替换?,c#,regex,C#,Regex,我遇到了一个深嵌套的大括号字符串,如下所示: {{{text1},{text2}},{{text3},{text4}}} [[{text1},{text2}],[{text3},{text4}]] 我只想保留最里面的花括号,并用方形支架替换另一个花括号,因此结果如下所示: {{{text1},{text2}},{{text3},{text4}}} [[{text1},{text2}],[{text3},{text4}]] 如何在C#中使用Regex.Replace()函数进行替换? 谢谢

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

{{{text1},{text2}},{{text3},{text4}}}
[[{text1},{text2}],[{text3},{text4}]]
我只想保留最里面的花括号,并用方形支架替换另一个花括号,因此结果如下所示:

{{{text1},{text2}},{{text3},{text4}}}
[[{text1},{text2}],[{text3},{text4}]]
如何在C#中使用Regex.Replace()函数进行替换?
谢谢

这将需要两个替换,首先将每个
{
替换为
[
,然后是
{
,然后将每个
}
替换为
]
,前面是一个非单词边界
\B
。试试这个C代码

印刷品

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


你甚至可以在
(?这需要两个替换,首先将每个
{
替换为
[
,然后是
{
,第二个将每个
}
替换为
]
,前面是一个非单词边界
\B
。试试这个C代码

印刷品

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


您甚至可以使用正面的后视
(?您应该能够使用两个替换来实现这一点。一个替换基于与单个
{
匹配的模式,该模式直接后跟另一个
{
。另一个替换基于与单个
}
匹配的模式,该模式直接后跟另一个
}
(向前看和向后看零长度断言运算符将有所帮助)@elgonzo嵌套的深度不是固定的
{(?![:alnum:]])
(?@TwenteMaster,我的评论中没有关于深度的内容…您应该能够使用两个替换来实现这一点。一个替换基于与单个
匹配的模式{
后面紧跟着另一个
{
。另一个替换基于一个模式匹配一个
}
,该模式前面紧跟着另一个
}
(向前看和向后看零长度断言操作符将有所帮助)@elgonzo嵌套的深度不是固定的
{(?![:alnum:])
(?@TwenteMaster,我的评论中没有关于深度的内容……如果我也希望最外面的大括号不改变,怎么修改regex@TwenteMaster:在这种情况下,您必须只替换前面和后面都有
{
{
,因此只替换中间的一个。对于
}的策略相同
括号。你想让我用一个解决方案更新我的帖子吗?我也很乐意这么做。如果我也希望最外面的大括号不改变,怎么修改regex@TwenteMaster:在这种情况下,您只能替换前面和后面都有
{
所以只有中间的部分被替换。括号的策略是一样的。你想让我用一个解决方案来更新我的帖子吗?我也很乐意这样做。