有以下代码System.out.println("a".matches("[.&&[a]]"));
显示为false.不是匹配任意字符吗?那么和a相与后应该还是a啊,为什么结果是false呢

解决方案 »

  1.   

    跟你解析下[.&&[a]]这个式子的意思:[.&&[a]这个会去匹配.&[a这几个字符中的一个字符最后的那个]当然就是匹配"]"这个字符了所以你那个为false;
      

  2.   

    "[.&&[a]这个会去匹配.&[a这几个字符中的一个字符 "按照这个意思,a也匹配啊
      

  3.   

    "[.&&[a]这个会去匹配.&[a这几个字符中的一个字符 "按照这个意思,a也匹配啊
      

  4.   

    .放到中括号中只能匹配一个点,你把代码改成System.out.println("a".matches("[a-z&&[a]]"))就可以了
      

  5.   

    .放在[]中就当.用,不起到匹配任意字符了,同时.放在\\后面也是起到字符.的作用。public class Test {
        public static void main(String[] args){
         System.out.println("a".matches("[.]")); // 打印结果---false
        
         System.out.println(".".matches("[.]")); // 打印结果---true
         System.out.println("a".matches(".")); // 打印结果---true
        
         System.out.println("a".matches("\\.")); // 打印结果---false
         System.out.println("a".matches(".")); // 打印结果---true
        }
    }
      

  6.   

    []中只有运算符起作用,即"^"与"&&",通配符不起作用,"."会被认为是字符".",而不是通配符。
    所以楼主的例子"."与"a"相与之后为空,肯定不和"a"匹配了。