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


Dram
90

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

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

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

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

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


Mr. Guro

Мне тяжело сегодня думать, но просто возьмите регулярку с последним словом, то что выделяет последнее слово — возьмите три раза. И тогда у вас будет массив из трех последних слов.


Dram

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

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

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

echo "The result of the substitution is ".$result;


Mr. Guro

Dram #:

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

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


lutskboy

w+s+w+s+w+$

https://regex101.com/r/kZrLNd/1

Regex101

  • Firas Dib
  • regex101.com
Online regex tester, debugger with highlighting for PHP, PCRE, Python, Golang and JavaScript.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *