Why can't you do this with a metadata plugboard? Something like
Code:
{authors:'re($, ' & ', ', ')'}
will change all the ampersands to commas. It doesn't deal with the apparent exception -- changing the last ampersand to ' and ', but this should be possible using a nested re. Something like
Code:
{authors:'re(re($, '(.*) & '. '\1 and'), ' & ', ', ')'}