首页 文章

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

提问于
浏览
4

我有类似的字符串

'abbb'

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

grep('bb','abbb')

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

3 回答

  • 1

    这是一个使用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
    }))
    
  • 6

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

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

    我们可以用 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')
    

相关问题