如何列出包含给定模式的字符串?

时间:2019-05-22 07:07:46

标签: r regex stringr

我有三个字符串,其中包含what,when,why,如下所示

  1. 您叫什么名字
  2. 何时以及为何要高速奔跑
  3. 你父亲叫什么名字

有没有办法列出包含给定模式的所有字符串。

首先我检测出该模式,然后计算出True值的数量

e<-str_detect(c, "What")
   length(e[e == TRUE])

我希望输出方式

Number of string contain What: 02 
Number of String contain when : 01
Number of String contain why : 01

1 个答案:

答案 0 :(得分:2)

我们可以创建一个向量来搜索并使用sapply来查找它是否存在于string

vals <- colSums(sapply(tags, function(x) 
        grepl(paste0("\\b",x, "\\b"), strings, ignore.case = TRUE)))
vals

#what when  why 
#   2    1    1 

ignore.case忽略大小写,因此"What""what"相同。

为每个"\\b"添加

字边界(tag),以使"what""whatever"不匹配。

数据

strings <- c("What is your name", "When and why should you run for high speed",
             "What is your father name ")
tags <- c("what", "when", "why")