Android 查找带有模式的文件(正则表达式)

jun*_*ats 2 java regex android filefilter

假设我在一个文件夹中有这样的文件:

  • myfile_mark_1.mp4
  • myfile_john_2.mp4
  • myfile_jake_3.mp4
  • myfile_tristan_4.mp4
  • yourfile_mark_1.mp4

如何查找仅包含前缀和后缀中包含“myfile_”的名称为3 或更少的文件"_3.mp4""_2.mp4""_1.mp4",类似这样的东西)。

所以在我的程序中我可以得到:

  • myfile_mark_1.mp4
  • myfile_john_2.mp4 和
  • myfile_jake_3.mp4

我试过这个,希望能走运,但我没有得到任何结果。:D

String myDirectory = Environment.getExternalStorageDirectory().getAbsolutePath();
File f = new File(myDirectory);
if (f.exists() && f.isDirectory()){
    final Pattern p = Pattern.compile("myfile_*\\_(^0*(1?\\d|%d)$).mp4"); // I know I really have a stupid mistake on the regex;

    File[] flists = f.listFiles(new FileFilter(){
        @Override
        public boolean accept(File file) {
            return p.matcher(file.getName()).matches();
        }
    });

    String s = "wait a minute, i'm debugging";
}
Run Code Online (Sandbox Code Playgroud)

我希望有人可以帮助解决我的问题。

Rav*_*yal 6

所需的正则表达式非常简单。

myfile_.*_[123]\\.mp4
Run Code Online (Sandbox Code Playgroud)


Yog*_*wal 5

尝试这个 :-

 String myDirectory = Environment
        .getExternalStorageDirectory().getAbsolutePath();
 File f = new File(myDirectory);
 if (f.exists() && f.isDirectory()) {
    final Pattern p = Pattern.compile("yourfile_.*_[123]\\.png"); 
 File[] flists = f.listFiles(new FileFilter() {
    @Override
    public boolean accept(File file) {
        p.matcher(file.getName()).matches();
        Log.e("MIS", "sdsdsdsds" + p.matcher(file.getName()).matches());

        return p.matcher(file.getName()).matches();

    }
});
String s = "wait a minute, i'm debugging";
Run Code Online (Sandbox Code Playgroud)

}