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

R语言如何提取第二个下划线后、点号前的字符串?

R语言提取指定位置的字符串内容

先把你的输入修正为正确的向量格式:

x <- c("Exche_log_group_2.csv", "Exche_log_group_3.csv")

这里提供两种简单的实现方式:

方法一:基础R的sub函数(无需额外包)

利用正则表达式匹配并替换,直接提取目标内容:

result <- sub("^[^_]+_[^_]+_(.*)\\..*$", "\\1", x)
# 输出结果
print(result)
# 如果要合并成空格分隔的字符串
paste(result, collapse = " ")

正则逻辑说明:

  • ^[^_]+_[^_]+_:匹配字符串开头到第二个下划线的所有内容
  • (.*):捕获第二个下划线之后、点号之前的目标内容
  • \\..*$:匹配点号及之后的所有内容
  • 替换时只保留捕获到的\\1部分,就是我们要的结果

方法二:stringr包的str_extract函数(更直观)

先安装并加载stringr包,用正则断言精准匹配:

# 安装包(首次使用时运行)
# install.packages("stringr")
library(stringr)

result <- str_extract(x, "(?<=^[^_]+_[^_]+_).*(?=\\.)")
print(result)
paste(result, collapse = " ")

断言逻辑说明:

  • (?<=^[^_]+_[^_]+_):后行断言,确保前面是到第二个下划线的内容
  • (?=\\.):先行断言,确保后面是点号
  • 中间的.*就是我们要提取的目标部分

运行后都会得到期望的输出:

group_2  group_3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 13:12:06