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
相关产品推荐
相关产品推荐

