public static void test3(){
String a = "fafa[hello.exe]";
Pattern p = Pattern.compile("\\[.+\\]");
Matcher m = p.matcher(a);
boolean b = m.matches();
System.out.println(b);
}显示的false 可是明明是可以匹配的啊.

解决方案 »

  1.   

    还有就是我想取到中括号里面的值怎么取啊,java设计的也太麻烦了吧..
      

  2.   


    String a = "fafa[hello.exe]";
    Pattern p = Pattern.compile("\\w+\\[(.+)\\]");
    Matcher m = p.matcher(a);
    boolean b = m.matches();
    System.out.println(b);
    System.out.println(m.group(1));
      

  3.   

    matches方法是全字符串匹配,只有整个字符串能够被你的正则表达式完全匹配的时候才会返回true;你自己那个只是匹配了部分而已,所以是false;一般是用find方法来判断是否有字符串能匹配的。
    至于取值,如LS所说,用()配合group取值
      

  4.   

    2,3楼说的比较清楚了,个人推荐find 毕竟matches全匹配很难写表达式(如2楼的 字符串为"fafa[hello.exe]xx"就要改表达式了 ),不如find只需要写需要的即可.String a = "fafa[hello.exe]xx";
    Pattern p = Pattern.compile("\\[(.+)\\]");
    Matcher m = p.matcher(a);while(m.find())
    {
      System.out.println(m.group(1));
    }
      

  5.   

    楼主2楼写的很清楚 像这些在网上有很多例子,我之前也是不懂Java 正则,但是搞开发的比其他行业有个重要的优势就是应该擅长在网上找资源,你可以现在网上搜一下 如果没有在来社区提问 建议结合javaAPI