REGEX busca por duas palavras

0 respostas
P

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?

Criado 3 de junho de 2014
Respostas 0
Participantes 1