使用正则表达式进行tar扩展匹配

时间:2014-07-18 18:00:50

标签: java regex

我有一个包含一些图像文件的目录。我想将所有这些文件移动到其他位置,只要它们不是tar扩展名。 Java中用于过滤tar文件的正则表达式是什么?

这是我的代码:

String regex = "^[[a-z]\\.[^tar]$]*";

3 个答案:

答案 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