2011-08-18 38 views
5

Tengo este código, pero parece que no funciona.Java Regex no coincide?

Pattern pattern=Pattern.compile("IMGURSESSION=([0-9a-zA-Z]*);"); 
Matcher matcher=pattern.matcher("IMGURSESSION=blahblah; path=/; domain=.imgur.com"); 
System.out.println(matcher.matches()); 

¿Alguien sabe por qué?

+0

No hay nada malo con la propia expresión regular. Funcionó cuando lo probé con [RegexBuddy] (http://www.regexbuddy.com/). –

+1

Lo sé. Sé lo suficiente para saber que funcionará. Y RegexBuddy - ¡40 dólares! ¡Insano! Me limito a http://gskinner.com/RegExr/ – Isaac

Respuesta

8

Matcher#matches() método intenta hacer coincidir la secuencia de entrada completa con el patrón.

Pattern.compile("IMGURSESSION=([0-9a-zA-Z]*);.*$"); //true 
Pattern.compile("IMGURSESSION=([0-9a-zA-Z]*);"); //false 
+0

Mmm, no sabía que coincidía con la secuencia completa, gracias. – Isaac

1

Asumiendo que su objetivo es extraer la IMGURSESSION:

import java.util.regex.*; 

Pattern pattern = Pattern.compile("IMGURSESSION=([0-9a-zA-Z]*);.*"); 
Matcher matcher = pattern.matcher("IMGURSESSION=blahblah; path=/; domain=.imgur.com"); 
if (matcher.find()) { 
    System.out.println(matcher.group(1)); 
} 

Sólo asegúrese de que usted pone en un partido de todo el patrón al final para satisfacer la semántica "matcher".

Cuestiones relacionadas