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

Java中split正向预查无法匹配最长数字序列的问题求解

解决Java字符串按多位数序号拆分的问题

你的代码里拆分逻辑的问题在于正则表达式(?=(\d+[、.]))会在每一个数字前触发拆分,哪怕这个数字是多位数的一部分(比如10里的1后面),所以才会把10拆成"1"和"0.haadfagada",11拆成"1"和"1.fsfdfare"。

修改方案

把拆分用的正则表达式改成(?=(?<!\\d)\\d+[、.]),这里的(?<!\\d)是负向零宽断言,作用是确保当前位置的前一个字符不是数字,这样就只会在独立的数字序号(比如8、9、10、11)的开头前拆分,不会破坏多位数的完整性。

修改后的完整代码

public static void main(String[] args) {
    String str = "8.adfafd9.abcdefg10.haadfagada11.fsfdfare";
    String[] results = str.split("(?=(?<!\\d)\\d+[、.])");
    for (int i=0; i<results.length; i++) {
        System.out.println("a[" + i + "] = \"" + results[i] + '"');
    }
}

运行结果

a[0] = "8.adfafd"
a[1] = "9.abcdefg"
a[2] = "10.haadfagada"
a[3] = "11.fsfdfare"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:42:50