2015-01-03 7 views
0

Я создал метод, который я надеюсь найти @ gmail.com в заданной строке, при тестировании, проходящем, например, [email protected], метод возвращает false.Matcher regex не соответствует шаблону

Я искал, но я не уверен, что мне не хватает, поскольку я использую .matches() - match.find() необходимо?

public final static boolean isGmail(String s) { 

    Pattern pattern = Pattern.compile("(\\W|^)[\\w.+\\-]*@gmail.com(\\W|$)"); 
    System.out.println(pattern + "   pp "); 
    Matcher m = pattern.matcher(s); 
    System.out.println(m + "   pp "); 
    boolean b = m.matches(); 
    System.out.println(b + "   pp "); 
    return b; 
} 

}

Regex Я очень новый, так что может быть проблема, которую я принимаю.

+0

[Это] (http://ideone.com/dYCCou) будет означать, что ваш метод возвращает 'true' – Reimeus

ответ

-1

Вам не нужно использовать регулярное выражение для этого, вы можете просто сделать

public final static boolean isGmail(String s) { 
    return s.indexOf("@gmail.com") > -1; 
} 
0

Если вы хотите, чтобы найти «@ gmail.com» в строке, вы должны использовать находки() метода для достижения правильного поведения.

Разница между матчем() и находит() в том, что метод матча() пытается согласовать весь регион тестируемой строки с рисунком, в то время как найти() пытается найти следующую подпоследовательность испытанных строка, которая соответствует шаблону (см. https://docs.oracle.com/javase/8/docs/api/java/util/regex/Matcher.html). Надеюсь, поможет.

Смежные вопросы