仅当星号是最后一个字符时匹配星号的Java正则表达式

仅当星号是最后一个字符时匹配星号的Java正则表达式,java,regex,Java,Regex,任何人都可以发现此代码中的任何错误 String value = "/files/etc/hosts/*"; if (value.matches("\\*$")) { System.out.println("MATCHES!"); } 当字符串的最后一个字符是星号时,我尝试执行一些操作 语法在我看来是正确的,我在上面进行了测试 提前谢谢 使用String#matches时,需要匹配字符串中的所有内容: if (value.matches(".*\\*$"

任何人都可以发现此代码中的任何错误

    String value = "/files/etc/hosts/*";
    if (value.matches("\\*$")) {
        System.out.println("MATCHES!");
    }
当字符串的最后一个字符是星号时,我尝试执行一些操作

语法在我看来是正确的,我在上面进行了测试


提前谢谢

使用
String#matches时,需要匹配
字符串中的所有内容

if (value.matches(".*\\*$")) {
String.matches()仅当正则表达式与整个CharSequence匹配时才返回true

尝试以下任一方法:

value.matches(".*?\\*$")
或者使用模式对象

编辑:根据评论请求

Pattern glob = Pattern.compile("\\*$");
if (glob.matcher(value).find()) {
    System.out.println("MATCHES!");
}
为什么不直接使用:

if (value.endsWith("*")) {

当需要匹配的只是输入的起始和结束时,为什么要匹配整个输入呢?这是
n
th post,它的
n
非常高,再次被
.matches()
用词不当的人所害:p你不是第一个,也不会是最后一个……嗯,没想到要用这个词。当你看别人的代码时,感谢似乎很容易。当您必须查看自己的代码并看到简单的东西时,这是非常困难的。