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

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


因为我使用的是量词,但不知道如何计算最后一次重复单个字符的实际次数。

最佳答案

"match.length"中的regexpr属性似乎可以完成工作(-1用于区分没有匹配项和零宽匹配项(例如前瞻)

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




另一个选择(@JasonAizkalns的贡献)是

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




或在指定stringi的同时使用nchar软件包和, keepNA = TRUE组合(这样将没有匹配项指定为NA

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

08-24 13:19