2017-10-10 42 views
0

我有一个载体一些字符串,如:r用str_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(),但我也很高兴其他的解决方案

谢谢您的帮助。

回答

3

您可能使用str_match更好,因为这样可以捕获组。 因此,您可以将_添加到上下文中,但只返回您感兴趣的位。(\\w+?)是捕获组,并且str_match将此作为第二列返回,因此[,2](第一列是str_extract将返回的那一列) 。

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

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

您可以使用base函数sub。

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

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

这里是str_extract的解决方案:

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

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

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

尝试stringi PAC kage:

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