2017-02-24 33 views
1

大家好我是新來的,我想知道如何在字符串中找到最後一個字符是字母表。我的字符串是這樣的:正則表達式查找最後一個字符是字母表

String a = "1:50A" 
String b = "E20S" 
String c = "1:20A" 
String d = "1:23B" 
String e = "1:43C" 
final String REGEX = "([a-z]*[A-Z])+$";; 
ArrayList<String> list = new ArrayList<String>(); 
list.add(a); 
list.add(b); 
list.add(c); 
list.add(d); 
list.add(e); 

for(String s : list){ 
Pattern pattern = Pattern.compile(REGEX); 
Matcher match = pattern.matcher(s); 

if(match.find()){ 
    //Do something with this 
} 

else{ 
    //do something with this 
} 

我想創建一個長期的正則表達式,它只會搜索的最後一個字符,如果它是一個大寫字母。

+0

你有沒有分享你的水果? – ChiefTwoPencils

+0

你的意思是? –

+0

您是否試圖編寫能夠滿足您需求的代碼?你有什麼問題完成它? – ChiefTwoPencils

回答

0

下面的正則表達式將匹配大寫字母

(.*[A-Z])$ 
結束串

與表達的問題是它匹配零個或多個小寫字母[a-z]*,您輸入有冒號(:)和數字太它不會匹配

0

您可以使用此正則表達式

(.*\p{Lu})$ 

做到這一點3210

對這個微不足道的任務使用正則表達式可以完成這項工作,但這並不是一個最佳解決方案。 .*是一個貪婪的量詞,並涉及很多回溯。

更優化的解決方案只是檢查字符串的最後一個字符。

String a = "1:50A"; 
String b = "E20S"; 
String c = "1:20A"; 
String d = "1:23B"; 
String e = "1:43C"; 

ArrayList <String> list = new ArrayList <String>(); 
list.add(a); 
list.add(b); 
list.add(c); 
list.add(d); 
list.add(e); 

for (String s: list) { 
    char ch = s.charAt(s.length()-1); 
    if (ch>='A' && ch<='Z') { 
     //Do something with this 
     System.out.println("match"); 
    } else { 
     //do something with this 
     System.out.println("no match"); 
    } 
} 
相關問題