Регулярка вычленяющая ФИО

D
На сайте с 28.06.2008
Offline
997
92

В сети много примеров регулярок вычленяющих ФИО, но мне нужно очистить ФИО от мусора и не могу придумать регулярку, не поможите?

В моей базе ФИО всегда в конце, вот пример

Смелянский Александр Юрьевич
Ооо "МираторгБелгород" Прохоров Владимир Иванович
Якушев Михаил Вячеславович
Шильников Александр Сергеевич
Скляренко Виктор Владимирович
Попов Александр Иванович
КОЛХОЗА Товстяк Владимир Васильевич
Бигас Анатолий Степанович
Высоцкий Николай Семенович
Чефранов Михаил Эдуардович
ЛИКВИДАТОР Помельников Юрий Михайлович
Ооо "Ук ПродимексСахар" Данькевич Григорий Николаевич
ИСПОЛНЯЮЩИЙ ОБЯЗАННОСТИ ГЕНЕРАЛЬНОГО А Астахов Анатолий Николаевич
Управляющий Фоминов Василий Иванович
Управляющий Ретунский Алексей Иванович
Быковец Людмила Сергеевна
Жабин Сергей Викторович

т.е. либо в строке правильно ФИО из трех слов и его не нужно трогать, либо впереди ФИО идет мусор.

Это реально очистить?  Т.е. мне нужен вариант для preg_replace

MG
На сайте с 28.08.2020
Offline
4
#1
Мне тяжело сегодня думать, но просто возьмите регулярку с последним словом, то что выделяет последнее слово - возьмите три раза. И тогда у вас будет массив из трех последних слов.
Консультации по SEO, аудиты, продвижение, поведенческие - возможна постоплата! mrguroseo@mail.ru @mrguroseo
D
На сайте с 28.06.2008
Offline
997
#2

придумал, отвечаю по традиции сам себе

$re = '~^(.*)((([А-ЯA-Z]|[А-ЯA-Z][\x27а-яa-z]{1,}|[А-ЯA-Z][\x27а-яa-z]{1,}\-([А-ЯA-Z][\x27а-яa-z]{1,}|(оглы)|(кызы)))\040[А-ЯA-Z][\x27а-яa-z]{1,}(\040[А-ЯA-Z][\x27а-яa-z]{1,})?))$~muU';
$str = 'Усов Василий Николаевич
Смелянский Александр Юрьевич
Ооо "МираторгБелгород" Прохоров Владимир Иванович
Якушев Михаил Вячеславович
Шильников Александр Сергеевич
Скляренко Виктор Владимирович
Попов Александр Иванович
КОЛХОЗА Товстяк Владимир Васильевич
Бигас Анатолий Степанович
Высоцкий Николай Семенович
Чефранов Михаил Эдуардович
ЛИКВИДАТОР Помельников Юрий Михайлович
Ооо "Ук ПродимексСахар" Данькевич Григорий Николаевич
ИСПОЛНЯЮЩИЙ ОБЯЗАННОСТИ ГЕНЕРАЛЬНОГО А Астахов Анатолий Николаевич
Управляющий Фоминов Василий Иванович
Управляющий Ретунский Алексей Иванович
Быковец Людмила Сергеевна
Жабин Сергей Викторович
Камолин Александр Валерьевич
Школлер Роман Александрович
Головин Максим Валентинович
';
$subst = '$2';

$result = preg_replace($re, $subst, $str);

echo "The result of the substitution is ".$result;
MG
На сайте с 28.08.2020
Offline
4
#3
Dram #:

придумал, отвечаю по традиции сам себе

Ну вот, я и говорю, три рада одно и то же. А про оглы - конечно не подумал, в примере не было.

lutskboy
На сайте с 22.11.2013
Offline
104
#4
Regex101
  • Firas Dib
  • regex101.com
Online regex tester, debugger with highlighting for PHP, PCRE, Python, Golang and JavaScript.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий