匹配多个模式,返回多个子串

时间:2016-09-01 01:24:13

标签: r

假设我有一个搜索字符串向量,以及一个可以包含多个匹配项的目标字符串。例如颜色:

    $this->i = 0;
    $this->startCacheClient()->pipeline(function($pipe) use($values, $jsonEncode, $keepAlive){

        foreach($values as $key => $currentValue){

            if($jsonEncode) {
                $currentValue = gzcompress(json_encode($currentValue), -1);
            }

            $pipe->set($key, $currentValue);
            $pipe->expire($key, $keepAlive);

            $this->i++;
        }
    });

什么是获得矢量的最有效方式(" Black"," Green");即,目标字符串中搜索字符串子集的向量?

2 个答案:

答案 0 :(得分:3)

我们可以使用Vectorize向量化grepl

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

答案 1 :(得分:1)

我们也可以使用可以使用向量的str_match。我们获得的vector输出的NA为非匹配,我们将其移除is.na

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