跟随字符串导致PatternSyntaxException
Pattern.compile("*\\.*");我想创建一个模式,这样我就可以过滤名称为以下格式的所有文件:"*.*"
我该怎么做呢?
发布于 2012-02-08 22:05:37
要匹配名称中包含.的所有字符串,请执行以下操作:
Pattern.compile(".*[.].*");要分解它,请执行以下操作:
.*匹配任意数量的character[.]匹配一个点。(是,\\. works too).*匹配任意数量的任意字符演示:
Pattern p = Pattern.compile(".*[.].*");
System.out.println(p.matcher("hello.txt").matches()); // true
System.out.println(p.matcher("hellotxt").matches()); // false请注意,只有一个点的字符串,"."也匹配。为了确保在点前后都有一些字符,可以将*更改为+:.+[.].+。
获得PatternSyntaxException的原因
*运算符将被解释为“前一个字符重复零次或多次”。由于您的表达式以*开头,因此没有重复的字符,因此抛出了异常。
发布于 2012-02-08 22:04:18
*字符在正则表达式中的含义与在命令行中用作文件通配符时的含义不同。有关Java Pattern正则表达式语法的更多信息可以在这里找到:http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
这将找到您要匹配的文本:
Pattern.compile(".*\\..*");发布于 2012-02-08 22:02:16
也许你的意思是:
Pattern.compile("\\*\\.\\*");如果不是,并且星号表示“任何字符”,则
Pattern.compile(".*\\..*");https://stackoverflow.com/questions/9194775
复制相似问题