I am trying to find a Java regex that matches a file name only if it has a valid extension. For example, it should match "foo.bar" and "foo.b", but not "foo". nor "foo".
I wrote the following test program
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); }
I expect this to print "true true false false", but instead, it prints false for all 4 cases. Where am I mistaken?
Cheers, Don
source share