This question already has an answer here:
How to restrict some file types and allow all others in Regular expression Asp.net
                            
                                (1个答案)
                            
                    
                2年前关闭。
        

    

我试图找到一个正则表达式,它允许没有某些扩展名的文件名。例如:


test.pdf =>确定
test.exe => ko
test.tmp => ko
test.EXE => ko
test.PDF =>确定


我不能使用end,因为我必须将整个RegEx放在.properties文件中。

我尝试了^.*\.(^exe|^tmp)$,但是它根本不起作用。

编辑:这不是REGEX for any file extension的重复,因为我需要忽略某些扩展名。那不是另一个问题的目的。

最佳答案

希望这会有所帮助!

public class StackOverflowQuestion45321328 {

    public static void main(String[] args) {

        List<String> data = new ArrayList();
        data.add("test.pdf");
        data.add("test.exe");
        data.add("test.tmp");
        data.add("test.EXE");
        data.add("test.PDF");

        String regex = "^.*(?<!exe|tmp)$";
        Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);

        for (String filename : data) {
            Matcher matcher = pattern.matcher(filename);
            boolean isMatchingPattern = matcher.matches();
            System.out.println(filename + " : " + isMatchingPattern);
        }
    }
}


输出:

test.pdf : true
test.exe : false
test.tmp : false
test.EXE : false
test.PDF : true

10-06 06:19