2012-03-30 10 views
8

Necesito saber si un String termina con algo así como .xyz más cualquier carácter después de él.Comprobando si String termina con algo con Java (Regex)

De esta manera:

myString.endsWidth(".css*") 

Sin embargo, esto no pasa a mi declaración si. Un ejemplo concreto es este tipo de cadena: style.css?v=a1b23

¿Alguna idea?

completo ejemplo de la secuencia:

http://xyz.com//static/css/style.css?v=e9b34 
+2

endsWith no utiliza expresiones regulares. – claesv

Respuesta

12

zumbido, que supongo algo como esto es aún mejor:

return myString.indexOf(".css")>-1; 

Si realmente quiere ir con expresión regular, usted podría utilizar este

return myString.matches(".*?\\.css.*"); 
+0

Probé ". *? \\. Css. *" Pero todavía no funcionó ... – xybrek

+1

Acabo de probar: "style.css? V = a1b23" .matches (". *? \\. Css. *") y devuelve 'verdadero' por lo que debe tener otro problema en alguna parte –

2

Use ".*\.css.+" como su regular e xpresión.

+0

¿No estoy seguro de dónde esto no funciona también? La cadena completa sería algo así como: http://xyz.com//static/css/style.css?v=e9b34 – xybrek

+0

¿Consideró la respuesta de Eric? Necesitas usar 'match (String)', not 'endsWith (String)'. Por cierto, actualicé la expresión. –

3

endsWith toma una cadena como parámetro

matches toma una expresión regular

0

uso \.(.{3})(.*) entonces el primer grupo ($ 1) contiene los tres caracteres después de . y el segundo grupo $ 2 contiene el resto de la cadena después de esos tres personajes. Añadir un signo $ al final de la expresión para que sea única busque cadenas que terminan con esa combinación

0

Pruebe algunas expresiones regulares:

Pattern p = Pattern.compile(".*\.css.*"); 
Matcher m = p.matcher("mystring"); 
if (m.matches()) { 
    // do your stuff 
} 
Cuestiones relacionadas