R 使用 str_extract (stringr) 导出“_”之间的字符串
R use str_extract (stringr) to export a string between "_"
我在向量中有一些字符串,例如:
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()
但我也很乐意使用其他解决方案
感谢您的帮助。
您最好使用 str_match
,因为这允许捕获组。
因此,您可以为上下文添加 _
任一侧,但只能添加 return 您感兴趣的位。 (\w+?)
是捕获组, str_match
return这是第二列,因此 [,2]
(第一列是 str_extract
会 return)。
library(stringr)
str_match(x,"ROH_(\w+?)_")[,2]
[1] "Pete" "Annette" "Steve"
您可以使用基函数 sub。
sub("ROH_([[:alpha:]]+)_.*","\1",x,perl=T)
[1] "Pete" "Annette" "Steve"
这里有一个解决方案 str_extract
:
library(stringr)
str_extract(x, "(?<=_).+?(?=_)")
# [1] "Pete" "Annette" "Steve"
您也可以在基数 R 中使用 gsub
:
gsub("^.+?_|_.+$", "", x)
# [1] "Pete" "Annette" "Steve"
试试 stringi
包:
library(stringi)
stri_split_fixed(a,"_", simplify = T)[,2]
[1] "Pete" "Annette" "Steve"
我在向量中有一些字符串,例如:
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()
但我也很乐意使用其他解决方案
感谢您的帮助。
您最好使用 str_match
,因为这允许捕获组。
因此,您可以为上下文添加 _
任一侧,但只能添加 return 您感兴趣的位。 (\w+?)
是捕获组, str_match
return这是第二列,因此 [,2]
(第一列是 str_extract
会 return)。
library(stringr)
str_match(x,"ROH_(\w+?)_")[,2]
[1] "Pete" "Annette" "Steve"
您可以使用基函数 sub。
sub("ROH_([[:alpha:]]+)_.*","\1",x,perl=T)
[1] "Pete" "Annette" "Steve"
这里有一个解决方案 str_extract
:
library(stringr)
str_extract(x, "(?<=_).+?(?=_)")
# [1] "Pete" "Annette" "Steve"
您也可以在基数 R 中使用 gsub
:
gsub("^.+?_|_.+$", "", x)
# [1] "Pete" "Annette" "Steve"
试试 stringi
包:
library(stringi)
stri_split_fixed(a,"_", simplify = T)[,2]
[1] "Pete" "Annette" "Steve"