我想读取不包含.temp
的文件作为文件夹中的扩展名。我想为此使用正则表达式。如何在正则表达式中使用排除项来执行此操作?
答案 0 :(得分:3)
这部分告诉你寻找一个特定的字符数组:[0-9]
。如果要排除它,只需在其前面添加^
(暗示“不是”)。与[^0-9]
的“非数字”类似。
所以,要回答你的问题,你可以在正则表达式中使用它:
^((?!\.temp).)*$
上面的正则表达式将匹配任何不包含.temp
的行答案 1 :(得分:2)
不要被打扰,只是否定测试:
private static final Pattern NOTME = Pattern.compile("\\.temp$");
// in code
if (NOTME.matcher(input).find())
// illegal!
但实际上,你应该使用:
if (input.endsWith(".temp"))
// illegal
此外,如果您使用Java 7,请弃用File
并使用Files
和Path
。
答案 2 :(得分:0)
知道它不是正则表达式,但为了便于阅读,我会使用
!fileName.endsWith(".temp")
答案 3 :(得分: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();
}
}
}