gpt4 book ai didi

regex - 使用 package stringi (regex) 替换部分字符串

转载 作者:行者123 更新时间:2023-12-01 13:30:15 26 4
gpt4 key购买 nike

我有一些字符串

string <- "abbccc"

我想将同一个字母的链替换为一个字母和该字母的出现次数。所以我想要这样的东西:“ab2c3”

我使用 stringi 包来做这个,但它并没有完全按照我想要的方式工作。假设我已经有了带有要替换零件的矢量:

vector <- c("b2", "c3")
stri_replace_all_regex(string, "([a-z])\\1{1,8}", vector)

输出:

[1] "ab2b2" "ac3c3"

我想要的输出:[1] "ab2c3"

我也试过这种方式

stri_replace_all_regex(string, "([a-z])\\1{1,8}", vector, vectorize_all=FALSE)

但是我得到了错误

Error in stri_replace_all_regex(string, "([a-z])\\1{1,8}", vector, vectorize_all = FALSE) : 
vector length not consistent with other arguments

最佳答案

不是正则表达式,而是 strsplitrle 以及一些 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"

关于regex - 使用 package stringi (regex) 替换部分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27204807/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com