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

Java正则表达式:如何提取字符串中除末尾数字外的内容(若存在)

在Java中提取字符串除末尾数字(含可选小数点)外的内容

嘿,既然你已经找到了匹配末尾数字(包括带小数点情况)的正则[0-9.]+$,那反过来的需求其实超级好实现——直接把匹配到的这部分内容替换成空字符串就行!

核心实现思路

Java的String.replaceAll()方法可以帮我们快速完成这个操作:用你的目标正则匹配字符串末尾的数字/小数点序列,然后将其替换为空,剩下的就是我们要保留的部分。

代码示例

public class StringProcessor {
    public static void main(String[] args) {
        // 测试你给出的所有示例,再加几个边界情况
        String[] testStrings = {
            "abd_12df1231",
            "abcd",
            "abcd12a",
            "abcd12a1",
            "product_567.89", // 带小数点的末尾数字
            "demo." // 末尾只有小数点的情况
        };

        // 遍历测试每个字符串
        for (String input : testStrings) {
            // 关键代码:替换末尾的数字/小数点序列为空
            String output = input.replaceAll("[0-9.]+$", "");
            System.out.printf("原字符串: %-15s → 处理后: %s%n", input, output);
        }
    }
}

运行结果

原字符串: abd_12df1231   → 处理后: abd_12df
原字符串: abcd           → 处理后: abcd
原字符串: abcd12a        → 处理后: abcd12a
原字符串: abcd12a1       → 处理后: abcd12a
原字符串: product_567.89 → 处理后: product_
原字符串: demo.          → 处理后: demo

正则说明

  • [0-9.]:匹配单个数字(0-9)或小数点
  • +:表示匹配前面的字符至少一次(也就是连续的数字/小数点序列)
  • $:锚定到字符串的末尾,确保我们只替换最后一段符合规则的内容

如果你的场景里不需要处理小数点(只去掉末尾的整数),把正则改成[0-9]+$就可以了,这样像product_567.89就会保留成product_567.。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:57:50