Как сократить регулярное выражение для поиска ФИО python
У меня на вход подаются имена фамилии и (необязательно) отчества. Например 'иван иванов', 'Даня','иван петрович восков', 'Kolya'. Мне нужно отсеить те имена, где есть только имя (только одно слово) и имена, написанные не на кириллице. Я написал такое регулярное выражение r'([А-ЯЁ]|[а-яё]+[А-ЯЁ]|[а-яё\-])+((?:\s+[А-ЯЁ]|[а-яё]+[А-ЯЁ]|[а-яё\-]+)+(?:\s+[А-ЯЁ]|[а-яё]+[А-ЯЁ]|[а-яё\-]+))?', но мой учитель сказал, что оно выглядит ужасно и тут вполне возможны баги. Как мне исправить это выражение?
Ответы (2 шт):
Автор решения: user398098
→ Ссылка
Уот так вот
[А-ЯЁа-яё]+(\s+[А-ЯЁа-яё]+)+
Если есть переводы строки, которые не надо учитывать то так:
[А-ЯЁа-яё]+([^\S\r\n]+[А-ЯЁа-яё]+)+