Java Wildcard to Regex wildcardToRegexString(String wildcard)

Here you can find the source of wildcardToRegexString(String wildcard)

Description

Convert strings containing DOS-style '*' or '?'

License

Apache License

Declaration

public static String wildcardToRegexString(String wildcard) 

Method Source Code

//package com.java2s;
/**/*from w w w .java 2 s .co m*/
 * Useful String utilities for common tasks
 *
 * @author Ken Partlow
 * @author John DeRegnaucourt (john@cedarsoftware.com)
 *         <br>
 *         Copyright (c) Cedar Software LLC
 *         <br><br>
 *         Licensed under the Apache License, Version 2.0 (the "License");
 *         you may not use this file except in compliance with the License.
 *         You may obtain a copy of the License at
 *         <br><br>
 *         http://www.apache.org/licenses/LICENSE-2.0
 *         <br><br>
 *         Unless required by applicable law or agreed to in writing, software
 *         distributed under the License is distributed on an "AS IS" BASIS,
 *         WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *         See the License for the specific language governing permissions and
 *         limitations under the License.
 */

public class Main {
    /**
     * Convert strings containing DOS-style '*' or '?' to a regex String.
     */
    public static String wildcardToRegexString(String wildcard) {
        StringBuilder s = new StringBuilder(wildcard.length());
        s.append('^');
        for (int i = 0, is = wildcard.length(); i < is; i++) {
            char c = wildcard.charAt(i);
            switch (c) {
            case '*':
                s.append(".*");
                break;

            case '?':
                s.append('.');
                break;

            // escape special regexp-characters
            case '(':
            case ')':
            case '[':
            case ']':
            case '$':
            case '^':
            case '.':
            case '{':
            case '}':
            case '|':
            case '\\':
                s.append('\\');
                s.append(c);
                break;

            default:
                s.append(c);
                break;
            }
        }
        s.append('$');
        return s.toString();
    }

    /**
     * Use this method when you don't want a length check to
     * throw a NullPointerException when
     *
     * @param s string to return length of
     * @return 0 if string is null, otherwise the length of string.
     */
    public static int length(final String s) {
        return s == null ? 0 : s.length();
    }
}

Related

  1. wildcardToRegex(String toSearch, boolean supportSQLWildcard)
  2. wildcardToRegex(String wildcard)
  3. wildcardToRegex(String wildcard)
  4. wildcardToRegex(String wildcardPattern)
  5. wildcardToRegexp(String globExp)