我有一个包含一些图像文件的目录。我想将所有这些文件移动到其他位置,只要它们不是tar
扩展名。 Java中用于过滤tar
文件的正则表达式是什么?
这是我的代码:
String regex = "^[[a-z]\\.[^tar]$]*";
答案 0 :(得分:1)
你有几种方法。
使用此正则表达式
^.*\.(?!tar).*$
EndWith解决方案
if(!filename.endsWith(".tar"))
FileFilter - Link
可能还有一些。我认为endsWith是最快的方式,而不是正则表达式,因为这是非常繁重的操作。
答案 1 :(得分:1)
试试这个:
// implement the FileFilter interface and override the accept method
public class ImageFileFilter implements FileFilter
{
private final String[] filterExtensions =
new String[] {"tar"};
public boolean accept(File file)
{
for (String extension : filterExtensions)
{
// if the file name does not end with the extension, you can accept it
if (!file.getName().toLowerCase().endsWith(extension))
{
return true;
}
}
return false;
}
}
然后您可以使用此过滤器获取文件列表
File dir = new File("path\to\my\images");
String[] filesWithoutTars = dir.list(new ImageFileFilter());
// do stuff here
编辑:
由于OP表示他无法修改java代码,因此以下正则表达式应该可以执行您想要的操作:^.*(?!\.tar)$
它将匹配字符串开头的任何内容,但断言" .tar"字符串末尾的部分将不匹配。
答案 2 :(得分:0)
使用String.matches()
方法测试匹配忽略大小写的字符串。
示例代码:
String regex = "(?i).*\\.tar";
String fileName = "xyz.taR";
System.out.println(fileName.matches(regex)); // true