Поиск индексов множественных/совпадающих совпадающих подстрок

У меня есть строка, s="CCCGTGCC" и подстрока ss="CC". Я хочу получить все индексы в s, которые начнут строку ss. В моем примере я хотел бы вернуть массив c(1,2,6).

Есть ли какая-либо строковая функция, которая достигает этого? Обратите внимание, что моя строка находится в форме "CCCGTGCC", а не c("C","C","C","G","T","G","C","C").

grep возвращает только совпадение в любом месте строки, а не индексы совпадений внутри строки, если я ничего не пропущу.

Ответы

Ответ 1

Попробуйте gregexpr с perl=TRUE и используйте регулярные выражения perl с прогнозными утверждениями (см. ?regex):

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