- Удаляет любые отчества
- Сохраняет фамилию, если таковая имеется
- Удаляет любые псевдонимы
- Удаляет любые девичьи или мертвые имена, стандартный формат (name-)
- Суффиксы сохраняются без знаков препинания. Всегда следует после фамилии.
- Не сохраняет дворянских титулов. Всегда следует \s после фамилии.
Лесли Мари ДеГузман Санторини -> Лесли Санторини
Бейонсе -> Бейонсе
Стефани «Леди Гага» Джерманотта -> Стефани Джерманотта
Леброн Джеймс-младший -> Леброн Джеймс-младший
Хейли Бибер (Болдуин-) -> Хейли Бибер
Шания (Ирен-) Твейн -> Шанайа Твен
Чарльз «Чаз» Флаффи Вонг, герцог Кэттаун -> Чарльз Вонг
Я попробовал несколько разных REGEX шаблоны и не могу понять, как один шаблон может соответствовать всем этим случаям. Ниже представлена моя последняя попытка.
Код: Выделить всё
re_names = re.compile(r'''^
\s*
(?P[a-zA-Z.'\-]+)
(?P(\s[a-zA-Z.'"\-\(\)]+)*)?
(?P\s[a-zA-Z.'\-]+)?
(?P(\s\([a-zA-Z,.'"\-]+\)*))?
(,\s)?
(?P([a-zA-Z'\-]+)*)?
.*
$
''',
re.VERBOSE)
Я также рассматривал возможность использования отдельной re.compile с отдельными шаблонами REGEX, но до сих пор не могу найти способ успешно зафиксировать все случаи.