我有类似的字符串
'abbb'
我需要了解有多少次我能找到子串'bb' .
grep('bb','abbb')
返回 1 . 因此,答案是 2 (a-bb和ab-bb) . 我怎样才能按照我需要的方式计算出现次数?
1
2
这是一个使用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 }))
您可以使用 '(?=bb)' 使模式不消耗,如下所示:
'(?=bb)'
length(gregexpr('(?=bb)', x, perl=TRUE)[[1]]) [1] 2
我们可以用 stri_count
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')
3 回答
这是一个使用substr和sapply的丑陋方法:
您可以使用
'(?=bb)'
使模式不消耗,如下所示:我们可以用
stri_count
数据