在R语言中提取第二个分隔符之前的所有内容
在R中提取第二个斜杠前的字符串内容
针对字符串"dat1/set1/set1_covars.csv",要提取第二个/之前(包含第二个/)的内容"dat1/set1/",可以用以下几种方法:
方法1:使用基础R的sub函数
调整正则表达式,捕获目标部分并保留它:
sub("(([^/]+/){2}).*", "\\1", "dat1/set1/set1_covars.csv")
正则说明:
(([^/]+/){2}):捕获组,匹配并保留两组「非斜杠字符+斜杠」的内容(也就是dat1/和set1/,合起来就是dat1/set1/).*:匹配第二个斜杠之后的所有内容- 替换为
\\1,即保留捕获到的目标部分
方法2:用strsplit分割后拼接
先按斜杠分割字符串,再取前两部分拼接并补回斜杠:
x <- "dat1/set1/set1_covars.csv" parts <- strsplit(x, "/")[[1]] result <- paste0(paste(parts[1:2], collapse = "/"), "/")
方法3:使用stringr包的str_extract
用正则直接提取开头到第二个斜杠的内容:
library(stringr) str_extract("dat1/set1/set1_covars.csv", "^([^/]+/){2}")
你之前的sub代码是把前两个斜杠相关的内容替换为空,所以得到的是后面的字符串,现在只需要调整正则逻辑,捕获目标部分并替换整个字符串为该捕获组即可。
内容的提问来源于stack exchange,提问作者TDeramus
相关产品推荐
相关产品推荐

