Can*_*ner 5 java regex patternsyntaxexception
以下字符串导致PatternSyntaxException:
Pattern.compile("*\\.*");
Run Code Online (Sandbox Code Playgroud)
我想创建一个模式,以便我可以使用以下格式过滤所有具有名称的文件: "*.*"
我怎样才能做到这一点?
要匹配.名称中包含 a 的所有字符串,您可以:
Pattern.compile(".*[.].*");
Run Code Online (Sandbox Code Playgroud)
分解它:
.*匹配任意数量的任意字符[.]匹配一个点。(是的,\\.也有效).*匹配任意数量的任意字符演示:
Pattern p = Pattern.compile(".*[.].*");
System.out.println(p.matcher("hello.txt").matches()); // true
System.out.println(p.matcher("hellotxt").matches()); // false
Run Code Online (Sandbox Code Playgroud)
请注意,只有一个点的字符串"."也匹配。为了确保点前面和后面都有一些字符,您可以将 : 更改*为+: .+[.].+。
你得到的原因PatternSyntaxException:
该*运算符被解释为“前一个字符重复零次或多次”。由于您开始表达时*没有可重复的字符,因此引发了异常。