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

Java正则拆分字符串:提取最后一段数字问题求助

解决字符串拆分字符段与数字段的正则问题

你的当前正则(?<=\D)(?=\d)会在每一个非数字字符后、数字字符前插入拆分点,这就导致处理"A1BC123"时,会先在"A"和"1"之间拆分,得到不符合预期的结果。

解决方案

修改正则为(?<=\\D)(?=\\d+$),它会仅在最后一组连续数字的起始位置拆分,完美匹配你的需求:

String str1 = "ABC123";
String[] parts1 = str1.split("(?<=\\D)(?=\\d+$)");
// 输出: ["ABC", "123"]

String str2 = "A1BC123";
String[] parts2 = str2.split("(?<=\\D)(?=\\d+$)");
// 输出: ["A1BC", "123"]

正则含义解析

  • (?<=\D):正向后顾断言,确保当前位置的前一个字符是非数字(\D匹配非数字字符)
  • (?=\d+$):正向前瞻断言,确保当前位置之后的所有字符都是数字(\d+匹配一个或多个数字),且直到字符串结尾($匹配字符串末尾)

补充说明

如果你的字符串存在开头为数字的情况(比如"123ABC"),这个正则不会进行拆分,因为不存在符合条件的拆分点。如果需要处理这类场景,可以进一步调整逻辑,比如先判断字符串末尾是否为数字,再执行拆分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:18:31