blob: 77544b5b7570767e4072551c03a3a26f1cc7476f [file] [log] [blame]
package org.eclipse.wst.sse.sieditor.search.provider;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class WildcardStringMatcher {
public static boolean matches(String wildcard, String input) {
Pattern p = Pattern.compile(wildcardAsRegex("*" + wildcard.toLowerCase() + "*")); //$NON-NLS-1$//$NON-NLS-2$
Matcher m = p.matcher(input.toLowerCase());
return m.matches();
}
private static String wildcardAsRegex(String wildcard) {
StringBuilder stringBuilder = new StringBuilder(wildcard.length() * 110 / 100);
for (int i = 0; i < wildcard.length(); i++) {
final char c = wildcard.charAt(i);
switch (c) {
case '*':
stringBuilder.append(".*?"); //$NON-NLS-1$
break;
case '?':
stringBuilder.append("."); //$NON-NLS-1$
break;
case '$':
case '(':
case ')':
case '+':
case '-':
case '.':
case '[':
case '\\':
case ']':
case '^':
case '{':
case '|':
case '}':
stringBuilder.append('\\');
stringBuilder.append(c);
break;
default:
stringBuilder.append(c);
break;
}
}
return stringBuilder.toString();
}
}