如何在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)