检查String是否以Regex字符串结尾的好方法

时间:2014-09-03 11:53:19

标签: java regex

我需要检查给定的String是否以正则表达式字符串结尾。我写了以下代码:

public static void main(String[] args) {
    String str = "wf-008-dam-mv1";
    String regex = "mv(\\d)?$";
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(str);

    if(matcher.find() && matcher.end() == str.length()) {
        System.out.println("Ends with true");
    } else {
        System.out.println("Ends with false");
    }
}

此处str可以有或没有数字结束。这是一个好方法吗?

3 个答案:

答案 0 :(得分:4)

这是一种非常合理的方式,除了matcher.end() == str.length()检查是多余的。 $正则表达式锚点已经处理好了。

答案 1 :(得分:3)

由于$锚已经确保模式必须在最后匹配,因此简单的find就足够了;你不需要验证比赛的结束。如果您使用.*添加模式,则可以使用matches而非find,这样您就可以删除整个模板:

boolean endsWith="wf-008-dam-mv1".matches(".*mv(\\d)?$");
System.out.println("Ends with "+endsWith);

这就是你所需要的......

答案 2 :(得分:1)

matcher.find()为您完成工作,无需查看matcher.end() == str.length()

API

If the match succeeds then more information can be obtained via the start, end, and group methods