计算字符串包含子字符串时的出现次数

时间:2016-02-22 20:40:11

标签: r

我有像

这样的字符串
'abbb'

我需要了解有多少次我能找到子串' bb'。

grep('bb','abbb')

返回1。因此,答案是2(a-bb和ab-bb)。我怎样才能按照我需要的方式计算出现次数?

3 个答案:

答案 0 :(得分:6)

您可以使用'(?=bb)'使模式不消耗,如:

length(gregexpr('(?=bb)', x, perl=TRUE)[[1]])
[1] 2

答案 1 :(得分:3)

这是一个使用substr和sapply的丑陋方法:

input <- "abbb"

search <- "bb"


res <- sum(sapply(1:(nchar(input)-nchar(search)+1),function(i){
  substr(input,i,i+(nchar(search)-1))==search
}))

答案 2 :(得分:1)

我们可以使用stri_count

library(stringi)
stri_count_regex(input, '(?=bb)')
#[1] 2

stri_count_regex(x, '(?=bb)')
#[1] 0 1 0

数据

input <- "abbb"
x <- c('aa','bb','ba')