Regex 从R中的字符串中删除重复的子字符串
是否有任何方法可以使用正则表达式(如gsub)或其他方法来消除字符串中的重复 基本上:Regex 从R中的字符串中删除重复的子字符串,regex,string,r,Regex,String,R,是否有任何方法可以使用正则表达式(如gsub)或其他方法来消除字符串中的重复 基本上: a = c("abc, def, def, abc") f(a) #[1] "abc, def" 一个明显的方法是将线串起来,得到独特的线并将它们缝合在一起 paste0(unique(strsplit(a, ",[ ]*")[[1]]), collapse=", ") 一个明显的方法是将线串起来,得到独特的线并将它们缝合在一起 paste0(unique(strsplit(a, ",[ ]*")[[1]
a = c("abc, def, def, abc")
f(a)
#[1] "abc, def"
一个明显的方法是将线串起来,得到独特的线并将它们缝合在一起
paste0(unique(strsplit(a, ",[ ]*")[[1]]), collapse=", ")
一个明显的方法是将线串起来,得到独特的线并将它们缝合在一起
paste0(unique(strsplit(a, ",[ ]*")[[1]]), collapse=", ")
您还可以使用stringr::str\u extract\u all
您还可以使用stringr::str\u extract\u all
您也可以基于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您也可以基于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我认为这应该符合我的目的。我会看看是否有其他的解决方案发布,但是谢谢。有没有办法用一个包含多个这样的字符串的向量来实现这一点?我认为这应该适合我的目的。我会看看是否有其他的解决方案发布,但是谢谢。有没有办法用一个包含多个这样的字符串的向量来实现这一点?