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

如何按数字分割字符串,使每个子串以数字开头?

解决方案:用正则表达式快速实现需求

核心逻辑

因为输入字符串首字符必为数字,我们只需要用正则匹配所有以数字开头、到下一个数字前截止的片段,直接提取这些片段就能得到目标数组。这种方式比手动遍历字符串分割高效得多。

具体实现(常见编程语言示例)

不管哪种语言,核心都是用正则匹配,对应的关键函数如下:

  • Python:用 re.findall() 一次性提取所有匹配项:
    import re
    input_str = "1fw3fe.w6=3\\657"
    result = re.findall(r'\d.*?(?=\d|$)', input_str)
    # 输出结果:['1fw', '3fe.w', '6=', '3\\', '6', '5', '7']
    
  • JavaScript:用 String.match() 结合全局正则匹配:
    const inputStr = "1fw3fe.w6=3\\657";
    const result = inputStr.match(/\d.*?(?=\d|$)/g);
    // 输出结果:["1fw", "3fe.w", "6=", "3\\", "6", "5", "7"]
    
  • Java:通过 Pattern 和 Matcher 循环提取匹配结果:
    import java.util.ArrayList;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class SplitDemo {
        public static void main(String[] args) {
            String inputStr = "1fw3fe.w6=3\\657";
            Pattern pattern = Pattern.compile("\\d.*?(?=\\d|$)");
            Matcher matcher = pattern.matcher(inputStr);
            ArrayList<String> result = new ArrayList<>();
            while (matcher.find()) {
                result.add(matcher.group());
            }
            // 最终结果就是需求的数组
        }
    }
    

正则表达式解释

\d.*?(?=\d|$) 这个正则的作用拆解:

  • \d:匹配一个数字,作为每个子串的起始
  • .*?:非贪婪模式匹配任意字符(不包含换行),避免一次性匹配到字符串末尾
  • (?=\d|$):正向预查,遇到下一个数字或者字符串结尾就停止匹配,刚好把每个数字开头的片段分割开

特殊场景适配

  • 如果字符串后续没有数字:正则会直接匹配整个字符串,返回包含该字符串的数组,完全符合需求
  • 若要兼容无数字的输入(虽然题目说首字符必为数字):可以先判断字符串是否包含数字,再执行匹配逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:21:58