Actually, the splitting job on this passwd line is done here:
```
      "no_${sshkey_distribution_index}"
        int     => parsestringarray("userarray_${sshkey_distribution_index}", "${userdata_${sshkey_distribution_index}}", "", ":", "1000", "200000" );
```

So it is not really useful to do it like using getfields when parsing directly passwd, as we would bypass the advantage of having a common abstraction on this, and using passwd directly on all OS'es would remove the ability to easily consider LDAP users also (getent abstracts this for us).

I'd rather stick to the first approach, with the correct regexp you suggested :)