我想要计算带有正则表达式的字符串末尾有多少逗号:
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
因为我正在使用量词,但不知道如何计算最终重复单个字符的实际次数。
答案 0 :(得分:7)
"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
s)
library(stringi)
nchar(stri_extract_all_regex(x, ",+$"), keepNA = TRUE)
## [1] 2 1 NA 3