i know u didnt want a loop, but i dont do regex sorry, maybe someone else will make a regex version if they feel like it, but beings we are just makeing you one thing already, maybe u can take it opnon yourself to learn from it and learn regex to figure out how to do it the other way :P

NC.names {
  var %ctr = 0, %tot = $matchtok($1-,$chr(32),0,44), %names
  while (%ctr < %tot) {
    inc %ctr | var %names = %names $gettok($matchtok($1-,$chr(32),%ctr,44),1,32)
  var %names = %names $gettok($1-,-1,44)
  return %names

what i noticed in your example is that all nicknames were parts of tokens containing a space if tokenized by chr 44 (,) so i used $matchtok to grab all tokens with spaces in them and echoed the first part of each token, then outside the loop i added the last nickname (as its the only one that doesnt fit this rule)

i tested it with your example and it worked, although if you go to test it do not just //echo $NC.names(*,*,...) set the string to a var first and then do $NC.names(%var) this is because the string contains ',' 's although for your script the infomration will already be in $1- or somethign of that sort so it will work anyways

hope this is helpful