You need to enable JavaScript to run this app. R语言使用grep相关功能提取含特殊字符字符串中数字并求和
优惠活动
大模型
产品
解决方案
定价
更多

R语言使用grep相关功能提取含特殊字符字符串中数字并求和

R字符串数字提取与求和实现方案

核心实现逻辑

  • 优先匹配括号包裹的两位数,再匹配单个数字/末尾的x,避免拆分括号内的两位数
  • 提取后统一转为数值格式,x默认映射为11,可根据业务需求调整映射规则
  • 返回结果为数值向量,天然支持按索引取单个值、直接求和操作

完整代码

# 加载依赖包,tidyverse用户可直接调用
library(stringr)
library(dplyr)

# 定义数字提取函数
extract_nums <- function(input_str) {
  # 正则匹配两种模式:括号内的两位数 / 单个数字或x
  match_res <- str_match_all(input_str, "\\((\\d{2})\\)|([\\dx])")[[1]]
  
  # 提取有效匹配值:优先取括号内的两位数,无括号则取单个字符
  raw_values <- ifelse(!is.na(match_res[,2]), match_res[,2], match_res[,3])
  
  # 转换为数值格式,x映射为11
  num_values <- ifelse(raw_values == "x", 11, as.numeric(raw_values))
  
  return(num_values)
}

功能测试

示例字符串测试

# 输入用户提供的示例字符串
s <- "123(11)56(10)89"

# 提取所有数字
result <- extract_nums(s)
result
# 输出:1  2  3 11  5  6 10  8  9

# 访问第5个数字
result[5]
# 输出:5

# 所有数字求和
sum(result)
# 输出:55

其他场景适配测试

# 场景1:无括号、末尾带x的字符串
s1 <- "123456789x"
extract_nums(s1)
# 输出:1  2  3  4  5  6  7  8  9 11

# 场景2:多个括号位置随机的字符串
s2 <- "1(22)34(33)567"
extract_nums(s2)
# 输出:1 22  3  4 33  5  6  7

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 22:24:02