我创建了一个方法,我希望在一个set字符串中找到@ gmail.com,测试传入例如stackoverflow@gmail.com,该方法返回false。
我已经搜索了但是我不确定我错过了什么,因为我正在使用.matches()是匹配.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;
}
}
正则表达式我很新,所以这可能是我接受的问题。
答案 0 :(得分:0)
如果你想找到" @ gmail.com"在字符串中,您应该使用 find()方法来实现正确的行为。
match()和find()之间的区别在于,match()方法尝试将测试字符串的整个区域与模式匹配,而find()尝试查找与模式匹配的测试字符串的下一个子序列(请参阅https://docs.oracle.com/javase/8/docs/api/java/util/regex/Matcher.html)。希望它有所帮助。
答案 1 :(得分:0)
你需要的正则表达式是:
[A-Z0-9._%+-]+@gmail\.com
public final static boolean isGmail(String s) {
return s.matches("(?i).*?[A-Z0-9._%+-]+@gmail\\.com.*");
}
答案 2 :(得分:-1)
你不需要使用正则表达式,你可以这样做
public final static boolean isGmail(String s) {
return s.indexOf("@gmail.com") > -1;
}