我試圖想出一個Java正則表達式,它只會匹配一個文件名,如果它有一個有效的擴展名。例如它應該匹配「foo.bar」和「foo.b」,但不是「foo」。也不是「富」。Java文件擴展名正則表達式
我已經寫了下面的測試程序
public static void main(String[] args) {
Pattern fileExtensionPattern = Pattern.compile("\\.\\w+\\z");
boolean one = fileExtensionPattern.matcher("foo.bar").matches();
boolean two = fileExtensionPattern.matcher("foo.b").matches();
boolean three = fileExtensionPattern.matcher("foo.").matches();
boolean four = fileExtensionPattern.matcher("foo").matches();
System.out.println(one + " " + two + " " + three + " " + four);
}
我預計這將打印「真真的虛假」,而是它打印所有4個僞。我哪裏錯了?
乾杯, 唐
剛剛昨天就打我了。 – agnul 2008-10-24 16:55:35
此外,唐可能會考慮在FileFilter中包裝他的正則表達式: http://java.sun.com/j2se/1.4.2/docs/api/java/io/FileFilter.html – 2008-10-25 04:10:08