Regex simples [RESOLVIDO]

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

[code]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());
	}	
}[/code]

Consegui:

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

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…

entendi… eu to apanhando muito dessa regex

Mas não funcionou

[quote=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…[/quote]
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)); } }

é necessário colocar o , 32?

O que?

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

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

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…