I first used the Text to Columns tool to split the data to rows using the comma, I then used a filter to remove the names without numbers using regex as follows:
REGEX_Match([users], ".*\d+.*")
I then gave the rows an ID and again used the Text to Columns tool to split the data to rows using the space (\s), which gave me a row per name for every user with the Record ID as the user ID.
I then paused for a coffee. It was Old Brown Java and was delicious.
Following my re-caffeination I used the multi-row formula to generate a name ID per person so if they have three names it would be 1,2,3 in order. The sum tool was then applied to determine the max name (last name) and was then joined back to the main stream. on Record ID and name ID to Max_name. The join gave me the last names, with the left giving me the other names. On the left output I then simply took the first name by using the sample tool to snaffle the first record grouped by record ID.
Then it was a simple matter of building the email address and email group, cross-tabbing into the groups I wanted and Robert's your father's brother, as they say here in old Blighty.