以下代码的输出应该是什么?

时间:2015-01-20 07:44:08

标签: java regex

在下面的代码中,模式没有逗号(,),而与之匹配的字符串包含逗号(,)。因此,理想情况下,代码的输出应该是" Not Matches"。但我得到了输出" Matches"。为什么正则表达式接受逗号(,)?

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");
         }

         }

    }

1 个答案:

答案 0 :(得分:1)

减号是一个特殊的字符(表示从引用到点的范围)。逃避它,你的正则表达式应该工作。

Pattern p1 = Pattern.compile("[A-Za-z0-9'\"\\-.:\\*?@/\\\\!_#$%&()\\[\\]{}=+\\p{Space}]+");