如何编写正则表达式从字符串中提取数字,可结合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
相关产品推荐
相关产品推荐

