Esconder Extensão do Arquivo com Expressão Regular

8 respostas
H

Olá pessoal,

como que eu faço para pegar urls que não terminam com extensão de arquivo (dominio.com.br/contato, dominio.com.br/empresa) e transformar em url com extensão de arquivo (dominio.com.br/contato.jsp, dominio.com.br/empresa.jsp).

Isto sem afetar imagens. (dominio.com.br/imagem.gif não virar dominio.com.br/imagem.gif.jsp)

To tentando implementar isto com o URLRewriter, mas expressão regular é foda.

8 Respostas

M
String url = "http://dominio.com.br/pasta/subpasta/arquivo";       
String url2 = "http://dominio.com.br/pasta/imagem.png";            
// primeiro, pegamos só a parte final do aquivo                    
url = url.substring(url.lastIndexOf('/') + 1);                     
url2 = url2.substring(url2.lastIndexOf('/') + 1);                  
// agora, regex                                                    
String regex = ".+\..{2,}";                                       
// se a URL combinar com a expressão, é porque tem extensão        
System.out.println(Pattern.matches(regex, url));                   
System.out.println(Pattern.matches(regex, url2));                  
// ou seja, se o resultado de matches for false, você faz o que for
// preciso
H

marcobiscaro2112:
String url = "http://dominio.com.br/pasta/subpasta/arquivo"; String url2 = "http://dominio.com.br/pasta/imagem.png"; // primeiro, pegamos só a parte final do aquivo url = url.substring(url.lastIndexOf('/') + 1); url2 = url2.substring(url2.lastIndexOf('/') + 1); // agora, regex String regex = ".+\..{2,}"; // se a URL combinar com a expressão, é porque tem extensão System.out.println(Pattern.matches(regex, url)); System.out.println(Pattern.matches(regex, url2)); // ou seja, se o resultado de matches for false, você faz o que for // preciso

Precisava de algo sómente usando espressão regular.

Sendo mais específico preciso de algo assim:

Capturar urls que não terminam com (.png, .jpg, .gif, .ico, .mp3).

Ex:
www.site.com.br/imagem.png -> nada fazer
www.site.com.br/contato -> capturar
www.site.com.br/imagem.gif -> nada fazer
www.site.com.br/imagem.jpg -> nada fazer

M

Se só precisa verificar o final, nem use regex. Use o método endsWith() de String.

H

É que uso esta biblioteca: urlrewrite e ela só funciona com Expressão Regular.

H

Minha dúvida pode resumir-se:

Se a palavra possui ponto (.), nega-se ela.

M

Tente assim:

// ao menos um caracterer, depois o ponto e ao menos mais um caracter
String regex = ".+\.\w+";

Caso não resolva sugiro que invista um tempo para estudar isso.

H

marcobiscaro2112:
Tente assim:

// ao menos um caracterer, depois o ponto e ao menos mais um caracter
String regex = ".+\.\w+";

Caso não resolva sugiro que invista um tempo para estudar isso.

A expressão :

".+\.\w+"

Funciona perfeitamente… mas eu preciso do contrário dela, pegar palavras que não possuem ponto.
file -> pegar
file.jpg -> nada fazer
file/file2 -> pegar
file.png -> nada fazer

H

Consegui resolver!

"[\w\-]{4}$" //Qualquer coisa que não possua ponto nos últimos 4 caracteres. "$0.jsp" //Substituo por JSP.

Criado 17 de dezembro de 2009
Ultima resposta 22 de dez. de 2009
Respostas 8
Participantes 2