Regex simples [RESOLVIDO]

9 respostas
P

Pessoal, estou começando agora com regex e está meio confuso ainda...

Queria algo simples, ler esta frase onde pego depois da palavra "fila" até encontrar o "." para parar:

Ex:
fila: 0006 - Server DOWN.

resultado que quero: 0006 - Server DOWN

public void validaFila(String input) {
		Pattern pattern;
		Matcher matcher;
		pattern = Pattern.compile(".*fila: ([0-9A-Fa-f]).*+", 32);
		
		matcher = pattern.matcher(input);
		
		if (matcher.matches()) {
			dispositivos.setFila(matcher.replaceAll("$1$2"));
			System.out.println("FILA: " + dispositivos.getFila());
		}	
	}

9 Respostas

P

Consegui:

pattern = Pattern.compile(".*fila: ([0-9A-Fa-f]+)+\\s[-]\\s([a-zA-Z]+)+\\s([a-zA-Z]+).*+", 32);
Rafael_Guerreiro

Você pode simplificar um pouco (vou explicar o que é cada coisa):

Pattern.compile(".*?fila:\\s(.*?\\.)");

Quando você coloca o “.*?” você está falando para pegar todos os caracteres até o próximo que continua a regexp… Ou seja, você faz o * ficar preguiçoso…

P

entendi… eu to apanhando muito dessa regex

Mas não funcionou

Rodrigo_Sasaki

Rafael Guerreiro:
Você pode simplificar um pouco (vou explicar o que é cada coisa):

Pattern.compile(".*?fila:\\s(.*?\\.)");

Quando você coloca o “.*?” você está falando para pegar todos os caracteres até o próximo que continua a regexp… Ou seja, você faz o * ficar preguiçoso…


Acho que é quase isso, mas o \. fica fora do grupo.public static void main(String[] args) { String str = "fila: 0006 - Server DOWN."; Pattern p = Pattern.compile(".*?fila:\\s(.*?)\\."); Matcher m = p.matcher(str); if(m.find()){ System.out.println(m.group(1)); } }

P

é necessário colocar o , 32?

Rodrigo_Sasaki

O que?

P

Pattern.compile(".fila: ([0-9A-Fa-f]+)+\s[-]\s([a-zA-Z]+)+\s([a-zA-Z]+).+", 32);

Rodrigo_Sasaki

Pra que isso tudo? o padrão que eu coloquei no exemplo já não resolve?

P

não resolveu rodrigo…
não sei pq não traz o resultado… é que estou lendo dados de uma porta serial, não sei se é por isso…

Criado 12 de dezembro de 2013
Ultima resposta 12 de dez. de 2013
Respostas 9
Participantes 3