jja*_*iak 2 regex string r stringi
我有一些字符串
string <- "abbccc"
Run Code Online (Sandbox Code Playgroud)
我想把同一个字母的链子替换成一个字母和这封信的出现次数.所以我想要这样的东西:
"ab2c3"
我使用stringi包来做到这一点,但它并不像我想要的那样工作.假设我已经有部件的矢量用于替换:
vector <- c("b2", "c3")
stri_replace_all_regex(string, "([a-z])\\1{1,8}", vector)
Run Code Online (Sandbox Code Playgroud)
输出:
[1] "ab2b2" "ac3c3"
Run Code Online (Sandbox Code Playgroud)
我想要的输出: [1] "ab2c3"
我也试过这种方式
stri_replace_all_regex(string, "([a-z])\\1{1,8}", vector, vectorize_all=FALSE)
Run Code Online (Sandbox Code Playgroud)
但我得到错误
Error in stri_replace_all_regex(string, "([a-z])\\1{1,8}", vector, vectorize_all = FALSE) :
vector length not consistent with other arguments
Run Code Online (Sandbox Code Playgroud)
不是正则表达式但strsplit和rle一些paste魔术:
string <- c("abbccc", "bbaccc", "uffff", "aaabccccddd")
sapply(lapply(strsplit(string, ""), rle), function(x) {
paste(x[[2]], ifelse(x[[1]] == 1, "", x[[1]]), sep="", collapse="")
})
## [1] "ab2c3" "b2ac3" "uf4" "a3bc4d3"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
766 次 |
| 最近记录: |