3

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

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

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

语法对我来说是正确的,我在http://regexpal.com/上对其进行了测试

提前致谢!

4

3 回答 3

16

为什么不直接使用:

if (value.endsWith("*")) {
于 2013-06-14T16:39:26.787 回答
6

String.matches() 仅在正则表达式匹配整个 CharSequence 时才返回 true。

试试这个:

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

或者使用 Pattern 对象。

编辑:根据评论请求。

Pattern glob = Pattern.compile("\\*$");
if (glob.matcher(value).find()) {
    System.out.println("MATCHES!");
}
于 2013-06-14T16:36:26.853 回答
3

您需要在String使用时匹配所有内容String#matches

if (value.matches(".*\\*$")) {
于 2013-06-14T16:36:14.150 回答