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
相关产品推荐
相关产品推荐

