У меня есть следующее String
, которое мне нужно проанализировать. Я ищу Board State
для каждого Slot
номера.
Some lines...
SLOT 2 (RP/LC 2): Random Text
MAIN:
PCA:
... More text
Board State is Val
... More text
Some lines...
SLOT 3 (RP/LC 3): Random Text
MAIN:
PCA:
... More text
Board State is Val2
... More text
subslot 0/9/0
В настоящее время у меня есть это.
String regex = "(^SLOT\\s*\\d+).*\\s*.*\\s*.*\\s*.*\\s*.*\\s*.*\\s*.*\\s*.*\\s*.*\\s*.*\\s*.*\\s*.*\\s*.*\\s*.*\\s*.*\\s*.*\\s*.*\\s*.*\\s*(Board.*)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(commandOutput);
while(matcher.find()) {
//Do Something
}
Я жестко кодирую количество строк, которое нужно пропустить, но мне это не нравится, и это плохое программирование.
Можно ли сделать что-то вроде
regex = "(^SLOT\\s*\\d+)(.*\\s*)+(Board.*)"; //This obviously doesn't work. Find slot, then skip one or more lines until it finds Board. I am using \\s instead of \\r\\n because \\s skips tabs as well.
Редактировать: Что касается именно то, что я хочу от регулярного выражения. Поместите SLOT #
в группу и Board State is Val
в другую группу для всех SLOTS
.