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

如何从字符串中提取指定部分?R语言字符串提取问题

R语言提取字符串中特定分隔符间的内容

针对你给出的字符串向量:

bb <- c("\\dat\\Bjkjgf_Yloiut_dsezr_proj_111_999.txt","\\dat\\Bjkjgf_Yloezr_proj_111_999.txt")

由于两个字符串长度不同,固定位置的substr()无法通用,推荐用正则表达式实现动态匹配提取,以下是两种可行方案:

方案一:基础R的sub()函数

利用正则捕获组,匹配并保留目标内容:

result <- sub(".*\\\\(.*)_proj.*", "\\1", bb)
# 输出结果
result
# [1] "Bjkjgf_Yloiut_dsezr" "Bjkjgf_Yloezr"

正则逻辑说明:

  • .*\\\\:匹配到最后一个反斜杠(R中需用四个反斜杠表示单个实际反斜杠)
  • (.*):捕获反斜杠后、_proj前的所有内容(即目标部分)
  • _proj.*:匹配_proj及后续所有字符
  • \\1:将整个字符串替换为捕获到的目标内容

方案二:stringr包的str_extract()函数

如果习惯更直观的正则写法,可使用stringr包的提取函数:

library(stringr)
result <- str_extract(bb, "(?<=\\\\).*?(?=_proj)")

正则逻辑说明:

  • (?<=\\\\):正向预查,定位到反斜杠之后的位置
  • .*?(?=_proj):非贪婪匹配任意字符,直到遇到_proj(不包含_proj本身)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 02:22:51