R 使用 str_extract(stringr) 导出“_”之间的字符串

766*_*660 2 r extract stringr

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

x <- c("ROH_Pete_NA_1_2017.zip",
   "ROH_Annette_SA_2_2016.zip",
   "ROH_Steve_MF_4_2015.zip")
Run Code Online (Sandbox Code Playgroud)

我需要从中提取名称strings (Pete, Annette, Steve) 我想在循环中执行此操作并使用str_extract()

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

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

感谢您的帮助。

And*_*tar 5

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

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

[1] "Pete"    "Annette" "Steve" 
Run Code Online (Sandbox Code Playgroud)


Sve*_*ein 5

这是一个解决方案str_extract

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

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

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