This was a deliberate change for R 2.4.0 with SVN log:
r38145 | rgentlem | 2006-05-20 23:58:14 +0100 (Sat, 20 May 2006) | 2 lines
fixing gregexpr infelicity
So it seems the author of gregexpr believed that the bug was in 2.3.1, not
2.5.1.
On Wed, 10 Oct 2007, dolanp at science.oregonstate.edu wrote:
Full_Name: Peter Dolan
Version: 2.5.1
OS: Windows
Submission from: (NULL) (128.193.227.43)
gregexpr does not find all matching substrings if the substrings overlap:
gregexpr("abab","ababab")
[[1]]
[1] 1
attr(,"match.length")
[1] 4
It does work correctly in Version 2.3.1 under linux.
'correctly' is a matter of definition, I believe: this could be considered
to be vaguely worded in the help.