2017-02-24 11 views
1

Hallo allerseits Ich bin neu hier und ich würde gerne wissen, wie man in einer Zeichenfolge zu finden, letzte Zeichen ist ein Alphabet. meine Schnur geht so:Regex Finde letztes Zeichen ist ein Alphabet

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 
} 

ich einen regulären Ausdruck in Ausdruck erstellen möchten, die es nur für das letzte Zeichen suchen, und wenn es sich um eine aktivierte Alphabet.

+0

Haben Sie Früchte von Ihrer Arbeit zu teilen? – ChiefTwoPencils

+0

was meinst du? –

+0

Haben Sie versucht, den Code zu schreiben, der Ihre Anforderungen erfüllt? Welche Probleme haben Sie dabei? – ChiefTwoPencils

Antwort

0

Der folgende reguläre Ausdruck Strings in einem Großbuchstaben

(.*[A-Z])$ 

Das Problem mit Ihrem Ausdruck enden würde paßt die [a-z]* war, der null oder mehr Kleinbuchstabe übereinstimmt, hat Ihre Eingabe Doppelpunkt (:) und Zahlen zu die würde es nicht passen

0

Sie können dies tun, indem Sie diesen regulären Ausdruck

(.*\p{Lu})$ 

DEMO

Die Verwendung von Regular Expression für diese triviale Aufgabe würde die Arbeit erledigen, aber das wäre keine optimale Lösung. .* ist ein gieriger Quantor und beinhaltet viel Backtracking.

Eine optimale Lösung wäre, nur das letzte Zeichen Ihres Strings zu überprüfen.

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"); 
    } 
} 
Verwandte Themen