我把D:\zip\a.mp3这样的文件分割为D:\zip\a.mp30.cut、D:\zip\a.mp31.cut……
现在要把他们恢复,所以要查找D:\zip\a.mp3*.cut这样格式的文件。
我之前把MP3文件分割为多个片,放到了源MP3文件所在的目录下了,
现在我获取文件所在的目录,然后列出文件名,要在里边匹配符合要求的,就是那些碎片文件,想把他们在恢复回去。
怎么写正则表达式????

解决方案 »

  1.   

    晕你都知道路径了,文件名也有顺序,直接用这个就能找到对应的File文件了,根据顺序规律改变下路径名就行了,还需要匹配吗?
      

  2.   

    根据这个碎片文件的路径D:\zip\a.mp30.cut,我可以获取他所在的目录D:\zip,然后列出所有的文件,
    里边有a.mp30.cut、a.mp31.cut、a.mp32.cut等文件,我要查找的是文件名是a.mp3*.cut样的文件,然后对其操作,如何识别他是这样的文件呢?String[] ss=path.list();
    for(String s:ss)
       ……这个不用正则表达式的话,怎么写?正则表达式的话,又是怎么写?
    a.mp3*.cut要精确匹配,不能是含有这个段字符串,是要和它完全匹配的。
    a.mp3我保存到了一个字符串prefix里了,prefix+"[0-9]"+".cut"可以匹配的还有类似……a.mp3*.cut……样的字符串。要怎么才能让它精确匹配?$还是什么其他符号,怎么写?
      

  3.   

    晕死了 这个目录下还有别的文件???
    非要正则,那就 String reg = "a.mp\\d+.cut";s.matches(reg)
      

  4.   

    ^(a.mp3\\d.cut){1,1}$
    实例:
    Pattern p=Pattern.compile(" ^(a.mp3\\d.cut){1,1}$"); 
    Matcher m = p.matcher(args[0]); 
    boolean b = m.matches(); 
      

  5.   

    大姐,嘿嘿,貌似你的可以,我见过^和$,说是匹配开头和结尾的,后边的{1,1}是什么?如果a.mp3是一个字符串变量的值,str="a.mp3",怎么写?"^("+str+"\\d.cut){1,1}$"吗?
      

  6.   

    这里的a.mp3和.cut都有问题
    比如aXmp33xcut也可以被匹配,  .号是要被转义的,代表任意字符
    \\d也有问题,因为你不知道mp3会被分割成多少片,那么有可能大于10,仅仅一个\\d只能匹配到0-9
    看自己需要写成\\d{1,2}   1到2位数字.
    String mp3Name = "I'm Yours - Jason Mraz.mp3";
    Pattern p = Pattern.compile("^\\Q" + mp3Name + "\\E\\d{1,2}\\.cut$");
    /*
    "^\\Q" + mp3Name + "\\E\\d{1,2}\\.cut$"
    用\\Q  \\E把 mp3Name包起来的原因是担心mp3的名字中含有特殊转义字符,可能会引起匹配失败
    所以用引用模式,类似于对引用中的内容进行Pattern.LITERAL就不会进行转义了.
    \\Q表示引用开始
    \\E表示引用结束.
    */
    Matcher m = p.matcher(mp3Name + "33.cut");
    System.out.println(m.matches());