查找多个/重叠匹配子string的索引
我有一个string, s="CCCGTGCC"
和一个子stringss="CC"
。 我想得到所有的索引在s
开始stringss
。 在我的例子中,我想要取回数组c(1,2,6)
。
有没有任何string函数实现了这一点? 请注意,我的string格式为"CCCGTGCC"
,而不是c("C","C","C","G","T","G","C","C")
。
grep
只返回string中是否有匹配项,而不是string中匹配项的索引,除非我丢失了一些东西。
使用perl=TRUE
尝试gregexpr
,并使用perl正则expression式和gregexpr
断言(请参阅?regex
):
gregexpr("(?=CC)","CCCGTGCC",perl=TRUE) [[1]] [1] 1 2 7 attr(,"match.length") [1] 0 0 0