2017-02-24 23 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"); 
    } 
} 
相关问题