Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Regex Find last character是一个字母表_Java_Regex - Fatal编程技术网

Java Regex Find last character是一个字母表

Java Regex Find last character是一个字母表,java,regex,Java,Regex,大家好,我是新来的,我想知道如何在字符串中查找,最后一个字符是字母表。我的字符串是这样的: 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>();

大家好,我是新来的,我想知道如何在字符串中查找,最后一个字符是字母表。我的字符串是这样的:

 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
}
String a=“1:50A”
字符串b=“E20S”
字符串c=“1:20A”
字符串d=“1:23B”
字符串e=“1:43C”
最后一个字符串REGEX=“([a-z]*[a-z])+$”;;
ArrayList=新建ArrayList();
列表.添加(a);
列表.添加(b);
增加(c)项;
列表.添加(d);
列表.添加(e);
用于(字符串s:列表){
Pattern=Pattern.compile(REGEX);
匹配器匹配=模式匹配器;
if(match.find()){
//用这个做点什么
}
否则{
//用这个做点什么
}

我想创建一个正则表达式,它只搜索最后一个字符,如果它是大写字母表。

以下正则表达式将匹配以大写字母结尾的字符串

(.*[A-Z])$

表达式的问题是匹配零个或多个小写字母的
[a-z]*
,输入的冒号(:)和数字也不匹配

以下正则表达式将匹配以大写字母结尾的字符串

(.*[A-Z])$

表达式的问题是匹配零个或多个小写字母的
[a-z]*
,输入的冒号(:)和数字也不匹配

您可以使用此正则表达式执行此操作

(.*\p{Lu})$

使用正则表达式完成这项琐碎的任务可以,但这不是一个最佳解决方案。
*
是一个贪婪的量词,涉及大量回溯

更理想的解决方案是只检查字符串的最后一个字符

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");
    }
}
String a=“1:50A”;
字符串b=“E20S”;
字符串c=“1:20A”;
字符串d=“1:23B”;
字符串e=“1:43C”;
ArrayList=新的ArrayList();
列表.添加(a);
列表.添加(b);
增加(c)项;
列表.添加(d);
列表.添加(e);
用于(字符串s:列表){
char ch=s.charAt(s.length()-1);

如果(ch>='A'&&ch,您可以使用这个正则表达式来实现这一点

(.*\p{Lu})$

使用正则表达式完成这项琐碎的任务可以,但这不是一个最佳解决方案。
*
是一个贪婪的量词,涉及大量回溯

更理想的解决方案是只检查字符串的最后一个字符

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");
    }
}
String a=“1:50A”;
字符串b=“E20S”;
字符串c=“1:20A”;
字符串d=“1:23B”;
字符串e=“1:43C”;
ArrayList=新的ArrayList();
列表.添加(a);
列表.添加(b);
增加(c)项;
列表.添加(d);
列表.添加(e);
用于(字符串s:列表){
char ch=s.charAt(s.length()-1);

如果(ch>='A'&&chd)你有什么劳动成果可以分享吗?你是什么意思?你有没有尝试编写满足你需要的代码?你在完成它时遇到了什么问题?是的,我有([A-z]*[A-z])$是这样工作的吗?但它搜索失败了?@chieftwopescils为什么不只是在字符串中反向循环搜索一个字母呢?Regex似乎有点过头了。你有什么劳动成果可以分享吗?你是什么意思?你有没有试着编写你需要的代码?你在完成它时遇到了什么问题?是的,我有([a-z]*[a-z])$这就是它的工作原理吗?但是它搜索失败了?@chieftwopencils为什么不只是在字符串中反向循环并搜索一个字母呢?正则表达式似乎有些过分了。