2014-09-03 84 views
1

我需要檢查給定的字符串是否以正則表達式字符串結尾。我寫了下面的代碼:好的方法來檢查一個字符串是否以正則表達式字符串結尾

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可以結尾有或沒有數字。這是做這件事的好方法嗎?

回答

2

由於$錨已經確保了圖案必須在最後匹配,簡單find足夠;你不需要驗證比賽結束。如果你在前面加上.*你的模式,你可以使用matches,而不是find它允許你刪除整個樣板:

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

這就是你所需要的...

4

這是一個非常合理的方式來做到這一點,除了matcher.end() == str.length()檢查是多餘的。 $正則表達式的錨已經照顧到了這一點。

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 
相關問題