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

时间:2015-10-20 18:43:04

标签: r

我想要计算带有正则表达式的字符串末尾有多少逗号:

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 个答案:

答案 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