Регулярное выражение, связанное с Java

#java #regex #matcher #regex-group

#java #регулярное выражение #сопоставитель #регулярное выражение-группа

Вопрос:

Я должен проанализировать следующий пример вывода. Требования заключаются в том, что после не должно быть текста, Fabric management FPC state: т. Е. Он должен быть пустым s . Следующая часть немного сложнее, и я застрял там. Таким образом, у каждого FPC есть одно или более PFE , и у каждого FPE есть одно или более SIB . Для каждого есть четыре возможных состояния 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.
  

Ответ №1:

Я думаю, что вместо одного огромного сложного регулярного выражения я предпочту делать это в условных циклах с несколькими регулярными выражениями.

Комментарии:

1. Подходить таким образом было бы проще.