我正在尝试找到一个允许没有特定扩展名的文件名的正则表达式。例如:
我无法使用结尾,因为我必须将整个RegEx放在.properties文件中。
我尝试了^.*\.(^exe|^tmp)$
,但它根本不起作用。
编辑:这不是REGEX for any file extension的重复,因为我需要忽略某些扩展。这不是另一个问题的目的。
答案 0 :(得分:1)
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
答案 1 :(得分:0)
试试这个正则表达式:
.*\.(?!(exe|tmp|EXE|TMP))(.+)
test.pdf -> OK
test.exe
test.tmp
test.EXE
test.PDF
tets.abcd.dfdf -> OK
abc.exe
abc.tmp
aexe.abc -> OK
跳这个帮助!