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