有没有办法(使用正则表达式gsub
或其他方式)从字符串中删除重复?
本质上:
a = c("abc, def, def, abc")
f(a)
#[1] "abc, def"
一种明显的方法是strsplit
使用绳子,获取unique
绳子并将它们缝合在一起。
paste0(unique(strsplit(a, ",[ ]*")[[1]]), collapse=", ")
你也可以使用stringr::str_extract_all
require(stringr)
unique(unlist(str_extract_all(a, '\\w+')))
您也可以基于 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