Dúvida REGEX

Pessoal como validar com regex se a extensão de uma arquivo é csv ou txt.

Tentei criar o padrão mais não está ‘casando’ de jeito nenhum!!

[code]
String filename = “arquivo.csv”;
Pattern pattern = Pattern.compile("^\*+.$");
Matcher matcher = pattern.matcher(filename);
System.out.println(matcher.matches());

(.cvs|.txt)$

Se não me engano, a classe String, possui um método para isso já… endWith parece… verifique.

Valeu chapa!

Com endWith(…) funcionou, mais com regex ainda não rolou!

Se alguém puder dar alguma sugestão de solução com REGEX eu agradeço.

O método matcher verifica se a string “se enquadra” à expressão regular.

Então para o código acima dar certo utilizando a expressão tbm acima é necessário incluir o restante da string na expressão.

.+(.csv|.txt)$

Cara valeu, resolveu de fato, mas você pode me explicar pq esse padrão não funciona?

Pattern.compile("^\\*+[.](csv)$"); 

Eu pensei que iniciando com * eu estava incluíndo a parte inicial da string.

Mas de ante mão, obrigado.

[quote=jesley.sena]Cara valeu, resolveu de fato, mas você pode me explicar pq esse padrão não funciona?

Pattern.compile("^\\*+[.](csv)$"); 

Eu pensei que iniciando com * eu estava incluíndo a parte inicial da string.

Mas de ante mão, obrigado.
[/quote]
na verdade sua expressão estava errada
vc precisaria de um .* que é case qualquer coisa.

eu nem consegui entender sua regex:
vc pensou em algo assim: inicie com , tenha . e termine com csv?

o certo é como nosso amigo mostrou, só explicando como poderia ser.
.*(csv)$ = pegaria qualquer coisa que terminasse com csv tendo ou não alguma coisa antes

ja o .+(csv)$ pega qualquer coisa que termine com csv e tenha algo antes

no caso de arquivo: .+(.ext)$ functiona bem

Valeu chapa. :thumbup: