Trovare gli indici di sottostringhe corrispondenti multiple / sovrapposte

Ho una stringa, s="CCCGTGCC" e una sottostringa ss="CC" . Voglio ottenere tutti gli indici in s che inizino la stringa ss . Nel mio esempio vorrei recuperare l’array c(1,2,6) .

C’è qualche funzione di stringa che raggiunge questo? Si noti che la mia stringa è nel formato "CCCGTGCC" e non c("C","C","C","G","T","G","C","C") .

grep restituisce solo se esiste una corrispondenza in qualsiasi punto della stringa e non gli indici delle corrispondenze all’interno della stringa, a meno che non manchi qualcosa.

Prova gregexpr con perl=TRUE e usa espressioni regolari perl con asserzioni look-ahead (vedi ?regex ):

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