Java 下面代码的输出应该是什么?
在下面的代码中,模式没有逗号,而与其匹配的字符串包含逗号,。因此,理想情况下,代码的输出应该不匹配。但是我得到了输出匹配。为什么正则表达式接受逗号Java 下面代码的输出应该是什么?,java,regex,Java,Regex,在下面的代码中,模式没有逗号,而与其匹配的字符串包含逗号,。因此,理想情况下,代码的输出应该不匹配。但是我得到了输出匹配。为什么正则表达式接受逗号 public static void main(String[] args) { String expression="Emplogin,,,,434pmc,"; if(expression!=null){ Pattern p1 = Pattern.compile("[A-Za-z0-9'\"-.:\\*?@/\\\\
public static void main(String[] args) {
String expression="Emplogin,,,,434pmc,";
if(expression!=null){
Pattern p1 = Pattern.compile("[A-Za-z0-9'\"-.:\\*?@/\\\\!_#$%&()\\[\\]{}=+\\p{Space}]+");
Matcher m1 = p1.matcher(expression);
if (m1.matches()){
System.out.println("Matches");
}else{
System.out.println("Not Matches");
}
}
}
减号是一个特殊的字符,表示从引号到点的范围。退出它,您的regexp应该可以工作
Pattern p1 = Pattern.compile("[A-Za-z0-9'\"\\-.:\\*?@/\\\\!_#$%&()\\[\\]{}=+\\p{Space}]+");
[和]之间的所有内容都将匹配,这里没有顺序。put-在char类中的第一个或最后一个或转义它。这样它就不会像一个范围操作符那样工作。*然后呢?是正则表达式通配符。所以,也可能是一个comma@Stultuske在一个char类中,它们失去了它们的特殊意义。@AvinashRaj:我不明白你的意思。你能重写一下正则表达式吗?谢谢你,它成功了。。。Y