I doubt there's much a GREP expression can do here, because there's too much variety and therefore not enough information in the list to construct rules to do this correctly. For instance, until I look it up, I can't be quite sure whether it should be: Adichie, Chimamanda Ngozi or Ngozi Adichie, Chimamanda Perhaps ChatGPT could help. (But you'll still need to go over the results with a toothcomb.) What I would probably do is write a few scripts (or GREPs could work), that would move the last word before any digits to the front and add a comma, then another that would move the last 2 words before any digits to the front and add a comma, and you might even need versions for 3 or 4 words. That would speed things up, but it would still by a manual job. Another semi-automatic way would be to go over the list manually, and add non-breaking spaces (or some other formatting, i.e. red colour), between the first names, effectively turning them into a single word. They you could write a GREP to move all that after the last word. ... Or, more simply, add something like a pipe character ( | ) before each last name, then run a single GREP on the entire list. That's probably the option I would personally go for.
... View more