gpt4 book ai didi

在 R 中使用正则表达式替换重复的字符串

转载 作者:行者123 更新时间:2023-12-04 10:45:52 27 4
gpt4 key购买 nike

我有一个字符串如下:

text <- "http://x.co/imag/xyz.png,http://x.co/imag/xyz.png,http://x.co/imag/xyz.png,http://x.co/imag/jpg.png"

我想消除所有重复的地址,所以我的预期结果是:

expected <- "http://x.co/imag/xyz.png,http://x.co/imag/jpg.png"

我在 regex101.com 中尝试了 (^[\w|.|:|\/]*),\1+ 并且它可以删除字符串的第一次重复(在第二次失败).但是,如果我将它移植到 R 的 gsub,它不会按预期工作:

gsub("(^[\\w|.|:|\\/]*),\\1+", "\\1", text)

我已经尝试使用 perl = FALSETRUE 无济于事。

我做错了什么?

最佳答案

如果它们是连续的,你只需要稍微修改你的正则表达式。

取出你的 BOS anchor ^
在逗号和反向引用周围添加一个簇组,然后对其进行量化(?:,\1)+
并且,去掉管道符号 |,因为在类中它只是一个文字。

([\w.:/]+)(?:,\1)+

https://regex101.com/r/FDzop9/1

 ( [\w.:/]+ )         # (1), The adress
(?: # Cluster
, \1 # Comma followed by what found in group 1
)+ # Cluster end, 1 to many times

注意 - 如果您使用 split 和 unique 然后组合,您将失去顺序的项目。

关于在 R 中使用正则表达式替换重复的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45292105/

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