2012-12-12 181 views
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

正则表达式不能处理嵌套结构。 –

+4

某些正则表达式可以处理嵌套结构(Perl RE),但很难,并且容易出错......最好使用真正的解析器/词法分析器。 – PhiLho

+0

@JoachimPileborg我认为这种说法可能会引起来自正则表达式半神人的一些反应:) –

回答

1

尝试这个表达式

{[\d\w]*.*?} 

它将返回

{[system5];1;1;0.9613443} 

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

它会匹配的是。但出于错误的原因... –

+0

添加数据,你想从字符串中抓取 –

+0

我的意思是你的正则表达式不像它打算工作的样子。整个匹配(不包括'{'和'}')实际上由'。*'执行。在这个例子中''\ d \ w] *'不匹配任何东西。 –