2012-12-12 183 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] *'不匹配任何東西。 –