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

如何使用模式匹配从R字符串向量中提取指定目标值?

在R中提取字符串向量中的目标值

可以通过正则表达式结合字符串处理工具实现需求,以下是两种常用方法:

方法一:使用stringr包(推荐,语法更简洁)

# 先安装并加载stringr包(首次使用需安装)
# install.packages("stringr")
library(stringr)

# 定义待处理的字符串向量
strings <- c('/ccr/1.10E+93_ccrdt/indices/1.10E+93_ccr_ann_123.csv',
             '/ccr/1.10E+93_ccrdt/indices/1.10E+93_obsrst_ann.csv',
             '/ccr/1012055_obsrt/indices/1012055_obsrrt.csv',
             '/ccr/1012055_obsrt/indices/1012055_ccr_ann.csv',
             '/ccr/1018598_obsrt/indices/1018598_obsrrt.csv',
             '/ccr/AOL_obsrt/indices/AOL_rrst.csv',
             '/ccr/WDF985_obsrt/indices/WDF985_rrst.csv')

# 提取目标值
extracted_values <- str_extract(strings, "(?<=/ccr/)[^_]+")

# 输出结果
print(extracted_values)

运行后会得到符合要求的结果:

[1] "1.10E+93" "1.10E+93" "1012055"  "1012055"  "1018598"  "AOL"      "WDF985"  

方法二:使用基础R函数

无需额外安装包,直接用regmatches和regexpr实现:

# 定义字符串向量
strings <- c('/ccr/1.10E+93_ccrdt/indices/1.10E+93_ccr_ann_123.csv',
             '/ccr/1.10E+93_ccrdt/indices/1.10E+93_obsrst_ann.csv',
             '/ccr/1012055_obsrt/indices/1012055_obsrrt.csv',
             '/ccr/1012055_obsrt/indices/1012055_ccr_ann.csv',
             '/ccr/1018598_obsrt/indices/1018598_obsrrt.csv',
             '/ccr/AOL_obsrt/indices/AOL_rrst.csv',
             '/ccr/WDF985_obsrt/indices/WDF985_rrst.csv')

# 提取目标值
extracted_values_base <- regmatches(strings, regexpr("(?<=/ccr/)[^_]+", strings, perl = TRUE))

# 输出结果
print(extracted_values_base)

正则表达式说明

(?<=/ccr/)[^_]+的含义:

  • (?<=/ccr/):正向零宽断言,确保匹配内容的前缀是/ccr/
  • [^_]+:匹配任意数量的非下划线字符,直到遇到第一个下划线为止,正好抓取我们需要的目标标识

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:11:08