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