使用R语言匹配并移除字符串中第二次重复的内容
R语言移除字符串右侧重复片段并提取目标内容
核心方案:利用反向引用正则匹配末尾重复的片段,捕获并保留前半段内容,再过滤无重复的字符串。
关键正则:
^(.*)\\s+\\1$^(.*):捕获字符串前半段的任意内容(即需要保留的部分)\\s+:匹配分隔重复片段的一个或多个空格\\1:反向引用捕获的前半段内容,确保后半段是完全重复的$:锚定字符串结尾,保证重复片段在末尾
完整代码实现:
names_vec <- c("Linda Smith","Elizabeth Olsen Green Elizabeth Olsen Green", "Eva Ferguson","Charlize Martinez White Charlize Martinez White", "digital copy solutions digitals", "honor security services honor security services") # 匹配替换重复内容 matched_results <- sub("^(.*)\\s+\\1$", "\\1", names_vec) # 过滤未匹配的无重复字符串 matched_vec <- matched_results[matched_results != names_vec] # 输出结果 print(matched_vec)
运行后得到目标向量:
[1] "Elizabeth Olsen Green" "Charlize Martinez White" "honor security services"
- 适配说明:如果重复片段的分隔符不是空格,只需将
\\s+替换为对应分隔符(如逗号替换为\\,);若需匹配部分单词重复,可调整正则为^((.*\\s)?(\\w+))\\s+\\3$,但需根据实际场景验证。
内容的提问来源于stack exchange,提问作者Edwin Acuña
相关产品推荐
相关产品推荐

