That's going to get messy. Fast.
WITH formats AS
(SELECT 'EN' code,
'\1 \2' fmt,
'first last' coment
FROM dual
UNION ALL
SELECT 'DE' code,
'\2, \1' fmt,
'last, first' coment
FROM dual
UNION ALL
SELECT 'FR' code,
'\2 \1' fmt,
'last first' coment
FROM dual),
names AS
(SELECT 'Sacha Baron Cohen' uniform_name_string
FROM dual d
UNION ALL
SELECT 'Catherine Zeta-Jones' uniform_name_string
FROM dual d)
SELECT names.*,
formats.*,
regexp_replace(names.uniform_name_string,
'(\w+)\W*(\w+)',
formats.fmt) formatted_name_string
FROM names
CROSS JOIN formats;
UNIFORM_NAME_STRING CODE FMT COMENT FORMATTED_NAME_STRING
Sacha Baron Cohen EN \1 \2 first last Sacha Baron Cohe n
Sacha Baron Cohen DE \2, \1 last, first Baron, Sacha n, Cohe
Sacha Baron Cohen FR \2 \1 last first Baron Sacha n Cohe
Catherine Zeta-Jones EN \1 \2 first last Catherine Zeta-Jone s
Catherine Zeta-Jones DE \2, \1 last, first Zeta, Catherine-s, Jone
Catherine Zeta-Jones FR \2 \1 last first Zeta Catherine-s Jone