Javascript 是否可以从{abc{content}xyz{content}randomtext{content}这样的字符串中解析和提取数据,而无需转义括号

Javascript 是否可以从{abc{content}xyz{content}randomtext{content}这样的字符串中解析和提取数据,而无需转义括号,javascript,c#,string,algorithm,parsing,Javascript,C#,String,Algorithm,Parsing,我有这样的字符串,很容易用普通的正则表达式解析: { a{some text} b{someOther text} xyz{some other text} randomName{ more text} } 是否可以正确解析组(a、xyz、randomName)的名称和内容? 结果应该是: (groupName, content) (a, some text) (b, someOther text) (xyz, some { other broken } text) (randomNa

我有这样的字符串,很容易用普通的正则表达式解析:

 { a{some text} b{someOther text} xyz{some other text} randomName{ more text} }
是否可以正确解析组(a、xyz、randomName)的名称内容? 结果应该是:

(groupName, content)

(a,  some text)
(b, someOther text)
(xyz, some { other broken }  text)
(randomName,  more text)
想想这个复杂的例子,
{
}
是内容的一部分:

{ a{ some text { } b{ many brackets  {{{{ }  } xyz{ some { other broken }  text} randomName{ {} } }
注意:解决方案不应该是转义{&}字符,而是直接识别组

正确解析的数据组应为:

(a, some text {)
(b,  many brackets  {{{{ } )
(xyz, some { other broken }  text)
(randomName,  {} })

这不会捕获组名,但我认为它会提取您期望的值

string input = "{ a{ some text { } b{ many brackets  {{{{ }  } xyz{ some { other broken }  text} randomName{ {} } }";
input = input.Trim(new char[]{'{', '}'});
var matches2 = Regex.Split(input, "(^|}) ([a-zA-Z]+?)({|$)", RegexOptions.ExplicitCapture);


Console.WriteLine("-------------------------");
foreach (var m in matches2) Console.WriteLine(m);
Console.WriteLine("-------------------------");        
输出 注意:存在空元素是因为:

如果在输入字符串的开头或结尾找到匹配项,则返回数组的开头或结尾将包含一个空字符串


Javascript还是C#?它们是非常不同的语言解决方案可以是任何语言,核心是算法问题。
b{{{{{{{}xyz{/code>=>
b-许多括号{{{{{{}/code>没有意义为什么不
b-许多括号{{{{{}{{{}/code>…没有提到为什么a不是
一些文本{{{{{}b{{}}xyz{some{other breaked}text}randomName{{}
…不可解析抱歉,我认为连字符混淆了答案,我认为现在更清楚了预期结果。基本上是获得组名和括号内的文本。问题是如何识别正确的括号,而忽略中间的括号。预期
(b,多个括号{{{{{}
(b,多个括号{{{{{}
)?这太棒了!这里的关键是正则表达式针对的是我们知道不会有
{
&
}的组名
,然后我们可以很容易地阅读内容。Alexei示例实际上也是有效的,因为它会导致这样的结果:
(b,许多括号{)
&.
(x,{{{{{})
-------------------------

 some text { 
 many brackets  {{{{ }  
 some { other broken }  text
 {} } 
-------------------------