2011-10-07 110 views
1

我必須解析下面的示例輸出。要求在Fabric management FPC state:之後應該沒有文字,即它應該是空的\s。接下來的部分是有點棘手,我卡在那裏。所以每個FPC有一個或多個PFE和每個FPE有一個或多個SIB。每個SIB有四種可能的狀態。他們是Plane Enabled, Link Error, Desination Error and Plane Disabled。我應該使用正則表達式解析這個問題,並跟蹤每個FPC, PFE and SIB的狀態。我不知道如何在正則表達式中使用'linked'組。Java鏈接正則表達式

Fabric management FPC state:         
FPC#0 
    PFE #0 
    SIB #0 
      Plane enabled 
    SIB #1 
      Link Error   
    PFE #1 
    SIB #0 
      Destination Error 
    SIB #1 
      Plane Disabled 
    SIB #2 
      Plane enabled  
FPC#1 
    PFE #1 
    SIB #0 
      Plane enabled 

到目前爲止,我有什麼是

public void parseFPCS(String commandOutput) { 
     regex = "FPC state:(\\s*)(FPC\\s*#?\\d+)\\s*(PFE\\s*#\\d+)\\s*(SIB\\s*#\\d+)\\s*(\\w*\\s*\\w*)"; 
     pattern = Pattern.compile(regex, patternFlag); 
     matcher = pattern.matcher(commandOutput); 

     while(matcher.find()) { 
      String empty = matcher.group(1); 
      Boolean isEmpty = empty.trim().isEmpty(); 
      if(isEmpty) { 
       System.out.println("Link Empty"); 
       System.out.println(matcher.group(2)); 
       System.out.println(matcher.group(3)); 
       System.out.println(matcher.group(4)); 
       System.out.println(matcher.group(5)); 
       //Right now I am just printing it out to see the outcome. 
      } 

     } 

The current outcome is 
    Link Empty 
    FPC#0 
    PFE #0 
    SIB #0 
    Plane enabled //This is expected. 

回答

0

我想,而不是有一個龐大複雜的正則表達式,我會更喜歡做它用正則表達式的多個條件循環。

+0

接近這種方式會更容易。 – theking963