如何在R字符串中找到重复模式?

如何在R字符串中找到重复模式?,r,regex,R,Regex,假设我有以下字符串: v = c("fam gen geo gen") 我需要一个正则表达式,它将在这个字符串中找到一个重复模式。例如,如果我选择: str_extract(v, "*regular expression*") 输出应为: "gen" 您能为这种情况提供一个正则表达式吗?好的,我假设您正在尝试创建一个包含4个元素的向量char 而不是 v = c("fam gen geo gen") 应该是 v = c("fam", "gen", "geo", "gen") 然后 如果

假设我有以下字符串:

v = c("fam gen geo gen")
我需要一个正则表达式,它将在这个字符串中找到一个重复模式。例如,如果我选择:

str_extract(v, "*regular expression*")
输出应为:

"gen"

您能为这种情况提供一个正则表达式吗?

好的,我假设您正在尝试创建一个包含4个元素的向量
char

而不是

v = c("fam gen geo gen")
应该是

v = c("fam", "gen", "geo", "gen")
然后

如果一个元素重复两次以上,并且只希望重复的元素返回一次,则可以使用
anyDuplicated

v <- c("fam", "gen", "geo", "gen", "gen")
v[duplicated(v)] 
>"gen" "gen"

v[anyDuplicated(v)]
>"gen"
v“gen”“gen”
v[任何重复(v)]
>“gen”

我要做一个与Nomad不同的假设。我将假设您有一个纯字符串,然后我将用假定的分隔符
(空间)

v=c(“fam-gen-geo-gen”)
vec您可以使用带有“backreference”的正则表达式:


如果有一组字母
(\\w+
)后跟一些(至少1个)其他元素
+
,则第一个捕获的字母组再次出现
\\1
(反向引用),然后返回这组字母(子函数的第二个参数).

您已经尝试了什么?是否只会有多个子字符串重复?在这种情况下,您想要什么输出?子字符串是否始终为3个字符?空格``总是分隔符吗?请提供有关可能输入和所需输出的更多详细信息。
v <- c("fam", "gen", "geo", "gen", "gen")
v[duplicated(v)] 
>"gen" "gen"

v[anyDuplicated(v)]
>"gen"
v = c("fam gen geo gen")

vec <- unlist(
    strsplit(v, " ")
)

vec[anyDuplicated(vec)]
[1] "gen"
sub(".*?(\\w+).+\\1", "\\1", v)