任何人都可以发现此代码中的任何错误?
String value = "/files/etc/hosts/*";
if (value.matches("\\*$")) {
System.out.println("MATCHES!");
}
当字符串的最后一个字符是星号时,我正在尝试执行一些操作。
语法对我来说是正确的,我在http://regexpal.com/上对其进行了测试
提前致谢!
任何人都可以发现此代码中的任何错误?
String value = "/files/etc/hosts/*";
if (value.matches("\\*$")) {
System.out.println("MATCHES!");
}
当字符串的最后一个字符是星号时,我正在尝试执行一些操作。
语法对我来说是正确的,我在http://regexpal.com/上对其进行了测试
提前致谢!
为什么不直接使用:
if (value.endsWith("*")) {
String.matches() 仅在正则表达式匹配整个 CharSequence 时才返回 true。
试试这个:
value.matches(".*?\\*$")
或者使用 Pattern 对象。
编辑:根据评论请求。
Pattern glob = Pattern.compile("\\*$");
if (glob.matcher(value).find()) {
System.out.println("MATCHES!");
}
您需要在String
使用时匹配所有内容String#matches
:
if (value.matches(".*\\*$")) {