R使用str_extract(stringr)在" _"之间导出一个字符串。

时间:2017-10-10 10:57:21

标签: r extract stringr

我在矢量中有一些字符串,如:

x <- c("ROH_Pete_NA_1_2017.zip",
   "ROH_Annette_SA_2_2016.zip",
   "ROH_Steve_MF_4_2015.zip")

我需要从strings (Pete, Annette, Steve)中提取名称 我想在循环中使用str_extract()

执行此操作

所有字符串都以ROH_开头,但名称的长度不同以及后面的字符串。

我想使用str_extract(),但我也很高兴其他解决方案

感谢您的帮助。

4 个答案:

答案 0 :(得分:4)

使用str_match可能会更好,因为这允许捕获组。  所以你可以为上下文添加_任何一方但只返回你感兴趣的位。(\\w+?)是捕获组,str_match将其作为第二列返回,因此[,2](第一列是str_extract将返回的内容。)

library(stringr)
str_match(x,"ROH_(\\w+?)_")[,2]

[1] "Pete"    "Annette" "Steve" 

答案 1 :(得分:2)

以下是 str_extract 的解决方案:

library(stringr)
str_extract(x, "(?<=_).+?(?=_)")
# [1] "Pete"    "Annette" "Steve"  

您还可以在基础R中使用 gsub

gsub("^.+?_|_.+$", "", x)
# [1] "Pete"    "Annette" "Steve"  

答案 2 :(得分:0)

您可以使用基本功能子。

sub("ROH_([[:alpha:]]+)_.*","\\1",x,perl=T)

[1] "Pete"    "Annette" "Steve"  

答案 3 :(得分:0)

尝试stringi包:

library(stringi)
stri_split_fixed(a,"_", simplify = T)[,2]
[1] "Pete"    "Annette" "Steve"