System.out.println("&".matches("[a-z&&[efg]]"));System.out.println("&".matches("[a-z&[efg]]"));System.out.println("+".matches("[a-z++[efg]]"));System.out.println("+".matches("[a-z+[efg]]"));输出结果依次是:false, true, true, true谁能告诉我为什么这样啊

解决方案 »

  1.   

    饿我建议你去查一下api
    java.regex.pattern
    应该是这个
      

  2.   

    &和 &&是不同的意思  一个是位运算符  一个是逻辑运算符  
    System.out.println("&".matches("[a-z&&[efg]]"));//false
    System.out.println("&".matches("[a-z&[efg]]"));//true
      

  3.   

    刚查了下api,还真有,谢谢你 哦
    "&".matches("[a-z&&[efg]]"),&&在这个里面是交集的意思,所以为false
    "e".matches("[a-z&&[efg]]"),这样就为true了
      

  4.   

    "&".matches("[a-z&&[efg]]")这句表示包含a到z的所有字符且包含e、f、g,相当于[efg]。此处的&&相当于“and”的意思。(交集)"&".matches("[a-z&[efg]]")这句表示a到z的所有字符且包含$字符,或者包含e、f、g,而e、f、g就已经包含在a-z中所以[efg]没有意义,此处的&只是一个普通字符。(并集)"+".matches("[a-z++[efg]]")、"+".matches("[a-z+[efg]]")  +号在[]中只表示普通字符,一个+号和两个++意义相同。不知道理解是否正确。
      

  5.   

    &&是取交集的意思,顺便学习一下。