Java正则表达式和匹配器

Java正则表达式和匹配器,java,regex,matcher,Java,Regex,Matcher,我所做的: public static String cvtPattern(String str) { StringBuilder pat = new StringBuilder(); int start, length; pat.append('^'); if (str.charAt(0) == '\'') { // double quoting on Windows start = 1; length = str.len

我所做的:

public static String cvtPattern(String str) {
    StringBuilder pat = new StringBuilder();
    int start, length;

    pat.append('^');
    if (str.charAt(0) == '\'') {    // double quoting on Windows
        start = 1;
        length = str.length() - 1;
    } else {
        start = 0;
        length = str.length();
    }
    for (int i = start; i < length; i++) {
        switch(str.charAt(i)) {
        case '*': pat.append('.'); pat.append('*'); break;
        case '.': pat.append('\\'); pat.append('.'); break;
        case '?': pat.append('.'); break;
        default:  pat.append(str.charAt(i)); break;
        }
    }
    pat.append('$');
    return new String(pat);
}

我的输入是.java,它将被编译成^.java$。为什么我的文件名是anywhere.java,它不匹配?我哪里做错了?

你的模式是错误的。
^.java$
将与
anthing.java
不匹配。你需要量化
来接受更多。你的信息应该是

^.*\.java$
^.*\.java$