2013-06-12 129 views
0

我想读取文件夹中不包含.temp作为扩展名。我想为此使用正则表达式。你如何使用正则表达式中的排除来做到这一点?正则表达式中排除

回答

2

这部分讲述寻找一个特定的字符数组:[0-9]。如果你想排除它,你只需在它前面添加一个^(意思是“不”)。像[^0-9]为“不是一个号码”。

因此,要回答你的问题,你会有这个正则表达式中:

^((?!\.temp).)*$ 

这上述正则表达式将匹配任何行不包含.temp

0

知道这是不是正则表达式,但为便于阅读,我会使用

!fileName.endsWith(".temp") 
2

不要打扰,只是否定测试:

private static final Pattern NOTME = Pattern.compile("\\.temp$"); 

// in code 

if (NOTME.matcher(input).find()) 
    // illegal! 

不过说真的,你应该使用:

if (input.endsWith(".temp")) 
    // illegal 

另外,如果你使用Java 7,请沟FileFilesPath去。

0

你可以尝试这样的事情,基于Java的接口的FilenameFilter:

package dk.tbsalling; 

import java.io.File; 
import java.io.FilenameFilter; 

public class FileDemo { 
    public static void main(String[] args) { 

     File f = null; 
     File[] paths; 

     try{  
     f = new File("d:/tmp"); 

     FilenameFilter fileNameFilter = new FilenameFilter() { 

      @Override 
      public boolean accept(File dir, String name) { 
       return name.matches(".+(?<!\.temp)"); 
      } 
     }; 

     paths = f.listFiles(fileNameFilter); 

     for(File path:paths) 
     { 
      System.out.println(path); 
     } 
     }catch(Exception e){ 
     e.printStackTrace(); 
     } 
    } 
}