首页 文章

计算字符串末尾的出现次数

提问于
浏览
4

我想用一个正则表达式计算字符串末尾有多少个逗号:

x <- c("w,x,,", "w,x,", "w,x", "w,x,,,")

我想得到:

[1] 2 1 0 3

这给出了:

library(stringi)
stringi::stri_count_regex(x, ",+$")
## [1] 1 1 0

因为我正在使用量词,但不知道如何计算最终重复单个字符的实际次数 .

1 回答

  • 7

    regexpr 中的 "match.length" 属性似乎完成了工作(-1用于区分不匹配的零宽度匹配,例如前瞻)

    attr(regexpr(",+$", x), "match.length")
    ## [1] 2  1 -1  3
    

    另一种选择(由@JasonAizkalns提供)将是

    nchar(x) - nchar(gsub(",+$", "", x))
    ## [1] 2 1 0 3
    

    或者在指定 , keepNA = TRUE 时使用 stringi 包和 nchar (这样不会将匹配指定为 NA

    library(stringi)
    nchar(stri_extract_all_regex(x, ",+$"), keepNA = TRUE)
    ## [1] 2  1 NA  3
    

相关问题