Нахождение индексов нескольких / перекрывающихся совпадающих подстрок

У меня есть строка, 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
Другие вопросы по тегам