gpt4 book ai didi

r - 在字符串中,如何删除已知 'start' 和 'end' 的一部分?

转载 作者:行者123 更新时间:2023-12-02 16:00:26 25 4
gpt4 key购买 nike

下面的数据框中有sku名称,我想删除以'V'开头并以'b'结尾的部分,我的代码str_remove_all(sku_name,"^(V ).*?(\\b)$") 无法工作。

有人可以帮忙吗?

mydata <- data.frame(sku_name=c('wk0001 V1b','123780 PRO V326b','ttttt V321b'))
mydata %>% mutate(sku_name_new=str_remove_all(sku_name,"^(V).*?(\\b)$"))

最佳答案

vec <- c('wk0001 V1b','123780 PRO V326b','ttttt V321b')
sub("V.*b$", "", vec)
# [1] "wk0001 " "123780 PRO " "ttttt "
stringr::str_remove(vec, "V.*b$")
# [1] "wk0001 " "123780 PRO " "ttttt "

这也适用于非贪婪的 "V.*?b$",如果有必要,交给你。

顺便说一句:\\b 是一个单词边界,而不是文字 b(V) 将它保存为一个组,这是没有必要的(而且看起来有点困惑)。真正的罪魁祸首是你包含了 ^,这意味着字符串的开头(正如你提到的),只有当所有字符串都以 V 开头时才会匹配,并且在 “Vsomethingb”。当前的vec字符串以"w""1""t"开头,都不是以 V 开头。

如果您需要正则表达式指南,https://stackoverflow.com/a/22944075/3358272是许多组件的良好指南(以及有关它们的问题/答案的链接)。

关于r - 在字符串中,如何删除已知 'start' 和 'end' 的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70796025/

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