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

如何使用stringr提取重复模式中的多个目标数字?

提取年龄数字的几种解决方法

针对你的需求,这里提供三种实用的方法来提取纯年龄数字:

方法1:改进正则表达式(直接提取)

利用正则的正向预查,直接匹配::之后的数字,无需额外处理:

library(tidyverse)

ex_str = "0::51||1::40||2::9||3::5||4::2||5::15"

str_extract_all(ex_str, "(?<=::)\\d+")

输出结果:

[[1]]
[1] "51" "40" "9"  "5"  "2"  "15"

正则说明:(?<=::)是正向预查,确保匹配的数字前面是::,\\d+匹配1个及以上数字。

方法2:分割字符串分步提取

如果对正则不太熟悉,分步分割的方式更直观:

ex_str |>
  str_split("\\|\\|") |>  # 按||拆分每个人员条目
  unlist() |>             # 把列表转成向量
  map_chr(~ str_split_fixed(.x, "::", 2)[,2]) |>  # 每个条目按::拆分,取第二部分
  as.integer()            # 转成整数类型(可选)

输出结果:

[1] 51 40  9  5  2 15

方法3:基于你现有代码的优化

在你已经提取到带::的结果后,直接移除开头的::即可:

str_extract_all(ex_str, "::[0-9]+") |>
  map(~ str_remove(.x, "^::")) |>  # 移除每个字符串开头的::
  map(as.integer)                  # 转成整数(可选)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 21:37:15