如何在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:在这种情况下,您只能替换前面和后面都有{
所以只有中间的部分被替换。括号的策略是一样的。你想让我用一个解决方案来更新我的帖子吗?我也很乐意这样做。