Use a zero lookaround expression. It will not consume its match. See ?regexp
> gregexpr("a(?=a)", "aaa", perl = TRUE) [[1]] [1] 1 2 attr(,"match.length") [1] 1 1 On Sun, Dec 20, 2009 at 1:43 AM, Jonathan <jonsle...@gmail.com> wrote: > Last one for you guys: > > The command: > > length(gregexpr('cus','hocus pocus')[[1]]) > [1] 2 > > returns the number of times the substring 'cus' appears in 'hocus pocus' > (which is two) > > It's returning the number of **disjoint** matches. So: > > length(gregexpr('aa','aaa')[[1]]) > [1] 1 > > returns 1. > > **What I want to do:** > I'm looking for a way to count all occurrences of the substring, including > overlapping sets (so 'aa' would be found in 'aaa' two times, because the > middle 'a' gets counted twice). > > Any ideas would be much appreciated!! > > Signing off and thanks for all the great assistance, > Jonathan ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.