#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. Подходить таким образом было бы проще.