+ private static class SearchParameter {
+
+ private final boolean exclude;
+ private final Pattern pattern;
+
+ private SearchParameter(boolean exclude, Pattern pattern) {
+ this.exclude = exclude;
+ this.pattern = pattern;
+ }
+
+ public boolean matches(String filename) {
+ return pattern.matcher(filename).find() && !exclude;
+ }
+
+ public static SearchParameter from(String parameter) {
+ boolean exclude = parameter.startsWith("-");
+ Pattern pattern = compile(exclude ? parameter.substring(1) : parameter, CASE_INSENSITIVE | UNICODE_CASE);
+ return new SearchParameter(exclude, pattern);
+ }
+
+ }
+