为什么“cfg \ pirates-wp8.cfg”与正则表达式不匹配“。* pirates \\ - wp8 \\。cfg”

时间:2014-10-30 12:55:27

标签: java regex

我正在使用java并尝试使用

过滤文件
filename.matches(".*pirates\\-wp8\\.cfg");

为什么" cfg \ pirates-wp8.cfg"不匹配regexp"。* pirates \ -wp8 \ .cfg"

我也试过这个:

filename.matches(".*pirates-wp8\\.cfg");

不起作用。

3 个答案:

答案 0 :(得分:0)

错误是双斜线。     “*海盗\ -wp8 \ .CFG” - 这个正则表达式工作

答案 1 :(得分:0)

我对Java很新,但可能会有所帮助。 我为你做了一个tiny example,似乎有效。

import java.lang.*;
import java.io.*;

class Ideone {
    public static void main (String[] args) throws java.lang.Exception {
        String filename = "cfg\\pirates-wp8.cfg";
        boolean b = filename.matches(".*pirates-wp8\\.cfg");
        System.out.println(b);
    }
}

答案 2 :(得分:0)

你的正则表达式字符串的开头是。*?因为。* 本身是贪婪的并且吃掉了匹配的整个字符串,然后可以&#39 ; t匹配正则表达式的其余部分。顺便说一句,连字符并不需要被转义,尽管它实际上并没有错。所以你的行必须是:

filename.matches(".*?pirates-wp8\\.cfg");