C# 拆分字符串,除非分隔符位于其他分隔符中

C# 拆分字符串,除非分隔符位于其他分隔符中,c#,regex,C#,Regex,更新问题: 我之前提出这个问题的尝试很弱,基于我的评论,我决定重写它 我试图拆分字符串,但在两种情况下忽略分隔符。。。到目前为止,我只能实现一个场景 鉴于这一点: string line = "id:2,width:0,bounds{x:1,y:1},screens:[{@subclass:hmm,bounds{x:2,y:2},no:yes}],more:less,less:more"; 用这句话: Regex.Split(line, @",(?![^{]*})|(?![^[]*})");

更新问题:

我之前提出这个问题的尝试很弱,基于我的评论,我决定重写它

我试图拆分字符串,但在两种情况下忽略分隔符。。。到目前为止,我只能实现一个场景

鉴于这一点:

string line = "id:2,width:0,bounds{x:1,y:1},screens:[{@subclass:hmm,bounds{x:2,y:2},no:yes}],more:less,less:more";
用这句话:

Regex.Split(line, @",(?![^{]*})|(?![^[]*})");
将导致

id:2
width:0
bounds{x:1,y:1}
screens:[{@subclass:hmm
bounds{x:2,y:2},no:yes}]
more:less
less:more
我放置了一个or操作符,这样我就可以抓取字符[但是边界转到下一行,但仍然保留no:yes,这是正确的


我不确定为什么屏幕和边界会因为上面的表达式而被拆分。

如果任何人需要在拆分表达式中过滤出多个场景,其中包含不可拆分的嵌套字符,这就是解决方案:

Regex.Split(line, ",(?!([^{]*}|[^[]*]))");

那么,您当前的方法有什么问题吗?您有一些错误或意外的结果吗?在测试时呢end@SergeyBerezovskiy我认为主要的问题是,即使给定的行也无法编译:)
string[]output=Regex.Split(“这是一个,{hmm,不,肯定,关于,this},test”,(?![^{]*})”;
@UlugbekUmirov很好的解决方案