我在矢量中有一些字符串,如:
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()
,但我也很高兴其他解决方案
感谢您的帮助。
答案 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"