Pessoal, desculpe mais um tópico de regex, estou estudando ele e está um pouco complicado algumas coisas...
Tenho esses dados:
>modem status
time .: 3s ago
gsm_res.: 1
gprs_res: 1
jamd....: 0
rssi....: 27
ber.....: 0
apn_id..: 1
ip......: 10.71.0.41
connid=1 active=1 state=2 txbytes=9236 rxbytes=284
connid=2 active=1 state=2 txbytes=12476 rxbytes=270
connid=3 active=0 state=0 txbytes=0 rxbytes=0
connid=4 active=0 state=0 txbytes=0 rxbytes=0
connid=5 active=0 state=0 txbytes=0 rxbytes=0
connid=6 active=0 state=0 txbytes=0 rxbytes=0
Queria ler assim, se ele achar o "modem status" para procurar abaixo dele, ai eu quero o time e pego o valor...
Eu consegui com o Time:public void validaModemTime(String input) {
Pattern pattern;
Matcher matcher;
pattern = Pattern.compile(".*modem\\sstatus\\n\\n.time.*.:\\s([0-9]+.\\s[a-zA-z]+).*", 32);
matcher = pattern.matcher(input);
if (matcher.matches()) {
// setar valor
String a = matcher.replaceAll("$1");
System.out.println("TIME: " + a);
}
}
Mas na verdade nem sei se é a maneira correta de fazer isso... Pois quero pegar estes itens abaixo do Modem status, para evitar que ele leia outro parâmetro de time de outro comando....
eu conseguiria pegar os valores separados tranquilamente com este código:
.*gsm_res.*.:\s([0-9]+).*
só trocando o valor entre ".*" mas não é garantido que esteja abaixo do "modem status"
Alguem poderia me dar uma ajudinha?