Esconder Extensão do Arquivo com Expressão Regular
8 respostas
H
hpdomarcelo
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.
Stringurl="http://dominio.com.br/pasta/subpasta/arquivo";Stringurl2="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 Stringregex=".+\..{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
hpdomarcelo
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
marcobiscaro2112
Se só precisa verificar o final, nem use regex. Use o método endsWith() de String.
H
hpdomarcelo
É que uso esta biblioteca: urlrewrite e ela só funciona com Expressão Regular.
H
hpdomarcelo
Minha dúvida pode resumir-se:
Se a palavra possui ponto (.), nega-se ela.
M
marcobiscaro2112
Tente assim:
// ao menos um caracterer, depois o ponto e ao menos mais um caracterStringregex=".+\.\w+";
Caso não resolva sugiro que invista um tempo para estudar isso.
H
hpdomarcelo
marcobiscaro2112:
Tente assim:
// ao menos um caracterer, depois o ponto e ao menos mais um caracterStringregex=".+\.\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
hpdomarcelo
Consegui resolver!
"[\w\-]{4}$" //Qualquer coisa que não possua ponto nos últimos 4 caracteres.
"$0.jsp" //Substituo por JSP.