| 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(); |
| } |
| } |