You get incorrect result because you're using 6.35. Here is a fix for 6.35:
//echo -a $regsubex(@a @r b &u i o d @e f ~g ,/(?:((?:^| )[@~&][^ ]+(?=$| ))|(?: |^)[^ ]+(?= |$))/g,\t)
The pattern js the same, you only replace \1 with \t (same as $regml(\n)).