2013-06-12 81 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(); 
     } 
    } 
}