我想算一下使用正则表达式的字符串末尾有多少个逗号:
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