有没有办法(使用gsub
或其他方法的正则表达式)从字符串中删除重复?
本质:
a = c("abc, def, def, abc")
f(a)
#[1] "abc, def"
答案 0 :(得分:3)
一种显而易见的方法是strsplit
字符串,获取unique
字符串并将它们拼接在一起。
paste0(unique(strsplit(a, ",[ ]*")[[1]]), collapse=", ")
答案 1 :(得分:2)
您也可以使用stringr::str_extract_all
require(stringr)
unique(unlist(str_extract_all(a, '\\w+')))
答案 2 :(得分:0)
您也可以使用基于gsub的此功能。我无法用一个正则表达式直接做到这一点。
f <- function(x) {
x <- gsub("(.+)(.+)?\\1", "\\1\\2", x, perl=T)
if (grepl("(.+)(.+)?\\1", x, perl=T))
x <- f(x)
else
return(x)
}
b <- f(a)
b
[1] "abc, def"
HTH