既然是有规律的文件名,那么通过substring就可以

解决方案 »

  1.   

    应该不是简单的subString吧,需求能明确点么?
      

  2.   

    String fileName = "test2221_2014061113.txt";
        System.out.println(fileName.replaceAll("test(\\d+)_\\d{8}(\\d*)\\..*", "$1---->$2"));
      

  3.   

    String fileName = "test2221_2014061113.txt";
    // String regex = "(?i)test([a-zA-Z0-9]+)_\\d{8}(.*)\\.txt";更好点??
    String regex = "(?i)test([a-zA-Z0-9]+)_20140611(.*)\\.txt";
    String str1 = fileName.replaceAll(regex, "$1");
    String str2 = fileName.replaceAll(regex, "$2");
    其中(?i)代表后面的部分不区分大小写,如果不需要,可以去掉(?i)
    另外,上面部分只是为了代码简单,如果处理比较大量的字符串,还是先编译成Pattern,然后Matcher处理。
      

  4.   

    我的需求是这样的:
    首先我定义了一个文件名 ,比如:test${area_id}_${day_id}*
    变量day_id是当前日帐期,可以替换成20140624等,也可能是月帐期,如201406,还有可能是分钟帐期等,长度不会固定。
    变量area_id则是无规则的,会根据替换后的正则去FTP目录下扫出所有文件 test[a-zA-Z0-9]+_20140611.*.txt,可能存在N多个文件。-rw-r--r--. 1 root root        8 Jun 23 16:25 test2221_2014061113.txt
    -rw-r--r--. 1 root root        8 Jun 23 16:25 test2222_2014061111.txt
    -rw-r--r--. 1 root root        8 Jun 23 16:25 test2223_2014061113.txt
    -rw-r--r--. 1 root root        8 Jun 23 16:25 test2224_2014061114.txt现在我想要拿到的就是正则匹配到的那一段字符,2221、2222、2223、2224
      

  5.   

    String regex = "(?i)test([a-z0-9]+)_(\\d+)\\.txt";