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

时间:2013-06-14 16:34:55

标签: java regex

任何人都可以在此代码中发现任何错误吗?

    String value = "/files/etc/hosts/*";
    if (value.matches("\\*$")) {
        System.out.println("MATCHES!");
    }

当字符串的最后一个字符是星号时,我正在尝试进行一些操作。

语法对我来说是正确的,我在http://regexpal.com/

上测试了它

提前致谢!

3 个答案:

答案 0 :(得分:15)

为什么不使用:

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

答案 1 :(得分:6)

如果正则表达式与整个CharSequence匹配,则String.matches()仅返回true。

尝试以下方法:

value.matches(".*?\\*$")

或者使用Pattern对象。

编辑:每条评论请求。

Pattern glob = Pattern.compile("\\*$");
if (glob.matcher(value).find()) {
    System.out.println("MATCHES!");
}

答案 2 :(得分:3)

使用String时,您需要匹配String#matches中的所有内容:

if (value.matches(".*\\*$")) {