我想用一个正则表达式计算字符串末尾有多少个逗号:
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
因为我正在使用量词,但不知道如何计算最终重复单个字符的实际次数 .
regexpr 中的 "match.length" 属性似乎完成了工作(-1用于区分不匹配的零宽度匹配,例如前瞻)
regexpr
"match.length"
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 )
, keepNA = TRUE
stringi
nchar
NA
library(stringi) nchar(stri_extract_all_regex(x, ",+$"), keepNA = TRUE) ## [1] 2 1 NA 3
1 回答
regexpr
中的"match.length"
属性似乎完成了工作(-1用于区分不匹配的零宽度匹配,例如前瞻)另一种选择(由@JasonAizkalns提供)将是
或者在指定
, keepNA = TRUE
时使用stringi
包和nchar
(这样不会将匹配指定为NA
)