查找多个/重叠匹配子串的索引

dan*_*345 15 grep r character

我有一个字符串s="CCCGTGCC"和一个子字符串ss="CC".我希望得到所有索引,s然后启动字符串ss.在我的例子中,我想要取回数组c(1,2,6).

是否有任何字符串功能可以实现这一目标?请注意,我的字符串是在表单中"CCCGTGCC",而不是c("C","C","C","G","T","G","C","C").

grep 只返回字符串中是否有匹配项,而不是字符串中匹配项的索引,除非我遗漏了某些内容.

Jos*_*ich 28

试着gregexprperl=TRUE和使用具有前瞻断言(见Perl的正则表达式?regex):

gregexpr("(?=CC)","CCCGTGCC",perl=TRUE)
[[1]]
[1] 1 2 7
attr(,"match.length")
[1] 0 0 0
Run Code Online (Sandbox Code Playgroud)

  • @RomanLuštrik:看看詹姆斯对OP的评论.如果找到匹配项,则会从正在搜索的字符串的剩余部分中删除该匹配项.请注意,`"match.length"`为零(如果`pattern ="CC",则为2). (3认同)