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

如何从无空格的字母数字混合字符串中提取所有数值?

嘿,我完全懂你的困扰!那些只能处理带空格字符串的函数确实帮不上忙,但用正则表达式就能轻松解决这个问题——不管字符串里有没有空格,它都能精准揪出所有数字序列。下面给你几个主流编程语言的实现方案,直接抄过去就能用:

核心思路:正则表达式匹配数字

正则里的\d代表单个数字,\d+则代表一个或多个连续的数字,刚好能匹配你需要提取的数值片段。

Python 实现

Python的re模块专门用来处理正则,用findall方法就能一次性提取所有匹配的数字序列:

import re

# 你的目标字符串
target_str = "123we45rt75"
# 提取所有连续数字的字符串列表
number_strs = re.findall(r'\d+', target_str)
# 如果需要转成整数类型,直接遍历转换
number_ints = [int(num) for num in number_strs]

print(number_ints)  # 输出: [123, 45, 75]

如果你的需求是提取单个数字(比如把123拆成1、2、3),只需要把正则改成r'\d'就行,这样会返回所有单个数字的列表。

JavaScript 实现

JS里用字符串的match方法搭配全局正则,就能快速拿到所有数字:

const targetStr = "123we45rt75";
// 全局匹配所有连续数字,返回字符串数组
const numberStrs = targetStr.match(/\d+/g);
// 转成数字类型
const numberInts = numberStrs.map(num => parseInt(num));

console.log(numberInts); // 输出: [123, 45, 75]

这里的g是全局匹配标志,必须加上,不然只会返回第一个匹配到的数字序列。

Java 实现

Java需要借助Pattern和Matcher类来遍历匹配:

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class NumberExtractor {
    public static void main(String[] args) {
        String targetStr = "123we45rt75";
        // 编译正则模式
        Pattern pattern = Pattern.compile("\\d+");
        Matcher matcher = pattern.matcher(targetStr);
        
        List<Integer> numbers = new ArrayList<>();
        // 遍历所有匹配结果
        while (matcher.find()) {
            numbers.add(Integer.parseInt(matcher.group()));
        }
        
        System.out.println(numbers); // 输出: [123, 45, 75]
    }
}

不管你用哪种语言,这个思路都通用——正则表达式完全不依赖字符串里的空格,专门匹配数字本身,完美解决你的问题!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:53:03