正则表达式 {} 解析

4
你好,我在解析这段文本时遇到了问题。
{
    {
        {
            {[system1];1;1;0.612509325};
            {[system2];1;1;0.977659115};
            {[system3];1;1;36.97828732969};
            {[system4];1;1;61.43154423}
        };2.5469
    };
    {
        {
            {[system5];1;1;0.9613443};
            {[system6];1;1;2.06340392};
            {[system7];1;1;4.12680784};
            {[system8];1;1;6.18989626};
            {[system9];1;1;24.75958504758};
            {[system10];1;3;61.8989626189}
        };31.6952
    }
}

我需要将它解析成如下的对象:
class Group
{
  Rate = 31.6952
  Systems = 
   {
    System5 = {[system5];1;1;0.9613443};
    System6 ={[system6];1;1;2.06340392};
    System7 ={[system7];1;1;4.12680784};
    System8 ={[system8];1;1;6.18989626};
    System9 ={[system9];1;1;24.75958504758};
    System10 ={[system10];1;3;61.8989626189}
   }
}

我尝试了

({[^{}]})

但它不能很好地进行分组。

3
正则表达式无法处理嵌套结构。 - Some programmer dude
4
某些正则表达式的风格可以处理嵌套结构(如Perl正则表达式),但这很困难且容易出错... 最好使用真正的解析器/词法分析器。 - PhiLho
@JoachimPileborg 我认为这个声明可能会引起一些正则表达式大神的反弹 :) - El Ronnoco
1
请按照[regex]标签描述的要求,使用您正在使用的编程语言进行标记。 - Wooble
1个回答

1
尝试使用这个正则表达式。
{[\d\w]*.*?}

它将返回

{[system5];1;1;0.9613443}

来自

System5 = {[system5];1;1;0.9613443};

添加你想从字符串中获取的数据。 - og Grand
我的意思是,你的正则表达式并没有按照预期的方式工作。整个匹配(不包括 {})实际上是由 .* 执行的。在这个例子中,[\d\w]* 将不会匹配任何内容。 - El Ronnoco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接