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

如何编写正则表达式从字符串中提取数字,可结合tidyverse的str_extract_all

R语言字符串数字提取实现方案

你可直接使用tidyverse生态下stringr包的str_extract_all函数完成需求,完整代码如下:

待处理字符串定义

str <- "12, 47, 48 The integers numbers are also interesting: 189 2036 314 ',' is a separator, so please extract these numbers 125,789,1450 and also these 564,90456. 7890$ per month "

提取代码

首先加载tidyverse包,使用匹配连续数字的正则规则\\d+即可提取所有整数:

library(tidyverse)
# 提取所有数字,返回列表格式
num_list <- str_extract_all(str, "\\d+")
# 转换为数值向量
num_result <- as.numeric(num_list[[1]])

如果需要直接简化输出为矩阵再转数值,可添加simplify = TRUE参数:

num_result <- str_extract_all(str, "\\d+", simplify = TRUE) %>% as.numeric()

输出结果

最终提取得到的所有数字为:
12, 47, 48, 189, 2036, 314, 125, 789, 1450, 564, 90456, 7890

常见出错原因

之前结果不符合预期大概率是正则规则设置错误,比如误加了逗号、空格等匹配限制,导致只能匹配特定分隔符分隔的数字,使用通用的连续数字匹配规则\\d+即可适配所有分隔场景。
如果需要匹配包含小数点的浮点数,将正则规则替换为\\d+\\.?\\d*即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:15:03