You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用正则表达式查找字符串中的最后一个字母?

获取字符串中最后一个字母的正则表达式方案

嘿,这个需求很常见,我来给你几个靠谱的正则方案!针对你给出的示例字符串 String str = "A76B62Z**F**63";,我们可以用正则直接定位到最后一个字母,不用先把所有字母都找出来再取最后一个,效率更高。

方案一:正向预查精准匹配

推荐使用这个正则表达式:

[A-Za-z](?=[^A-Za-z]*$)

正则解释:

  • [A-Za-z]:匹配任意一个大小写字母(如果你的场景只需要大写字母,可以改成[A-Z])
  • (?=[^A-Za-z]*$):这是正向预查,作用是确保当前匹配的字母后面,直到字符串结尾,再也没有其他字母了——也就是后面只有非字母字符,或者直接到字符串末尾。

Java代码示例:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class LastLetterFinder {
    public static void main(String[] args) {
        String str = "A76B62Z**F**63";
        Pattern pattern = Pattern.compile("[A-Za-z](?=[^A-Za-z]*$)");
        Matcher matcher = pattern.matcher(str);
        
        if (matcher.find()) {
            System.out.println("找到的最后一个字母:" + matcher.group()); // 输出结果:F
        } else {
            System.out.println("字符串中没有字母");
        }
    }
}

方案二:捕获分组匹配

如果你习惯用捕获分组的方式,也可以用这个正则:

([A-Za-z])[^A-Za-z]*$

正则解释:

  • ([A-Za-z]):把匹配到的字母捕获到第1个分组里
  • [^A-Za-z]*$:匹配这个字母后面所有的非字母字符,直到字符串结尾。整个正则匹配的是最后一个字母加上它后面的所有内容,我们只需要提取第1个分组的内容即可。

对应代码示例:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class LastLetterFinder {
    public static void main(String[] args) {
        String str = "A76B62Z**F**63";
        Pattern pattern = Pattern.compile("([A-Za-z])[^A-Za-z]*$");
        Matcher matcher = pattern.matcher(str);
        
        if (matcher.find()) {
            System.out.println("找到的最后一个字母:" + matcher.group(1)); // 输出结果:F
        } else {
            System.out.println("字符串中没有字母");
        }
    }
}

这两个方案都能完美处理你的示例场景,甚至如果字符串最后直接以字母结尾(比如"test123X"),也能正确匹配到最后一个字母哦~

内容的提问来源于stack exchange,提问作者DAVE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 13:17:29