R 匹配多个模式,返回多个子字符串

R 匹配多个模式,返回多个子字符串,r,R,假设我有一个搜索字符串向量和一个可能包含多个匹配项的目标字符串。e、 g.颜色: search_strings <- c("Black","Grey","Green") target_string <- "FooBlackBlahGreenBleh" search\u strings我们可以使用Vectorize对grepl进行矢量化: search_strings[Vectorize(grepl)(search_strings,target_string)] # [1] "Bla

假设我有一个搜索字符串向量和一个可能包含多个匹配项的目标字符串。e、 g.颜色:

search_strings <- c("Black","Grey","Green")
target_string <- "FooBlackBlahGreenBleh"

search\u strings我们可以使用
Vectorize
grepl
进行矢量化:

search_strings[Vectorize(grepl)(search_strings,target_string)]
# [1] "Black" "Green"

我们可以使用
Vectorize
grepl
进行矢量化:

search_strings[Vectorize(grepl)(search_strings,target_string)]
# [1] "Black" "Green"

我们还可以使用
str\u match
来获取向量。作为输出得到的
向量
对于非匹配项有NA,我们用
移除它是.NA

library(stringr)
v1 <- str_match(target_string, search_strings)[,1]
v1
#[1] "Black" NA      "Green"
v1[!is.na(v1)]
#[1] "Black" "Green"
库(stringr)

v1我们还可以使用
str\u match
来获取向量。作为输出得到的
向量
对于非匹配项有NA,我们用
移除它是.NA

library(stringr)
v1 <- str_match(target_string, search_strings)[,1]
v1
#[1] "Black" NA      "Green"
v1[!is.na(v1)]
#[1] "Black" "Green"
库(stringr)

v1@ZheyuanLi感谢您的反馈。我对效率没有把握。
stringr
函数是从
stringi
包中优化的。@ZheyuanLi感谢您的反馈。我对效率没有把握。
stringr
函数从
stringi
包中优化。