1

次のサンプル出力を解析する必要があります。要件は、後にテキストがないこと、Fabric management FPC state:つまり空である必要があることです\s。次の部分は少しトリッキーで、私はそこで立ち往生しています。したがって、それぞれFPCに1つ以上がPFEあり、それぞれFPEに1つ以上がありSIBます。それぞれに4つの可能な状態がありますSIB。彼らはPlane Enabled, Link Error, Desination Error and Plane Disabledです。正規表現を使用してこれを解析し、それぞれの状態を追跡することになっていますFPC, PFE and SIB'linked'正規表現でグループを作成する方法がわかりません。

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.
4

1 に答える 1

0

1 つの巨大で複雑な正規表現を使用する代わりに、複数の正規表現を使用して条件付きループで実行することを好むと思います。

于 2011-10-07T14:54:24.270 に答える