У меня есть String
, что мне нужно разобрать. Я ищу Board State
для каждого номера Slot
.Regex - Пропустить одну или несколько строк
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.
Edit: Как раз то, что я хочу от регулярного выражения. Поместите SLOT #
в группу и Board State is Val
в другую группу для всех SLOTS
.
Что такое t ext вы пытаетесь захватить и какой текст/строку вы хотите пропустить? – anubhava
«Государство совета» для каждого «SLOT» i.e. «SLOT 2 - Board State - Val», «SLOT 3 - Board State имеет значение Val2» и так далее. Есть несколько 'SLOT', я здесь только 2 здесь. – theking963