This is not a bug. This is one of the quirks of regex engines. I've mentioned it before in
another bug report.
QUOTE (ptrk.mj @ Apr 24 2011, 21:51)

As I explained in the first post regex engines apart from matching at each character offset (...) also try to match a pattern at an offset behind the last character (i.e. match a pattern against void at the end of the string) (...)
$regexp(test,(.*),$1 oops)
1. .* matches the whole string (start of the match at offset 0).
2. Match ("test") is captured into first backreference.
3. Match is replaced with '$1 oops' so that "test" becomes "test oops".
4. .* matches void after the string (start of match at offset 1, zero-width match). Star makes the dot
optional so that the pattern can match here!
5. Match ("") is captured into first backreference. That's right! The first backreference
exists and simply holds
nothingness.
6. Match is replaced with '$1 oops' so that "" becomes " oops"
After all, our input string "test" becomes "test oops oops".