This is a detail, but this regex /^([a-z][a-z\s]*[a-z])(\W+)(\d[\d-]*\d)$/i is too specific. Input file contains lines with "x=y" format, so we must only search for "=" -- see jwkrahn's contribution: Re: Swap Input lines.
Here some examples where this regex doesn't match:
Jean-Paul Goude = 22-22
Marcel Duchamp = One-Two-Two
Victoire Passage = 118_218
Philip K. Dick = 123-456
So, you're swapping around pieces of the input, even on lines that do not contain a =? And on the other hand, you don't swap around input on lines that do contain a =, but don't match a regexp you distilled from looking at two examples? Yet, you still allow many other lines that aren't either the first, or the second example.
That's an, uhm, "interesting" way of answering the question. I wonder whether it's helpful.