hattifattener,
select regexp_matches('xaabbbccccddddd',E'((.)\\2*)','g');
"{x,x}"
"{aa,a}"
"{bbb,b}"
"{cccc,c}"
"{ddddd,d}"
SELECT version();
"PostgreSQL 9.2.8 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-52), 64-bit"
винда:
select regexp_matches('xaabbbccccddddd',E'((.)\\2*)','g');
"{x,x}"
"{aa,a}"
"{bbb,b}"
"{cccc,c}"
"{ddddd,d}"
SELECT version();
"PostgreSQL 9.3.0, compiled by Visual C++ build 1600, 32-bit"
т.е. неясно, что у вас не фурыкает
вариант -- парсер не может понять [платформенная разница в ём] что и в каком порядке квантифицировать и делает \(2*) вместо (\2)*.
попробуйте явно выделить:
select regexp_matches('xaabbbccccddddd','(.)((\1)*)','g');
"{x,"",NULL}"
"{a,a,a}"
"{b,bb,b}"
"{c,ccc,c}"
"{d,dddd,d}"
ну и вариант с экранировкой звизды приведите