В сети много примеров регулярок вычленяющих ФИО, но мне нужно очистить ФИО от мусора и не могу придумать регулярку, не поможите?
В моей базе ФИО всегда в конце, вот пример
Смелянский Александр Юрьевич
Ооо "МираторгБелгород" Прохоров Владимир Иванович
Якушев Михаил Вячеславович
Шильников Александр Сергеевич
Скляренко Виктор Владимирович
Попов Александр Иванович
КОЛХОЗА Товстяк Владимир Васильевич
Бигас Анатолий Степанович
Высоцкий Николай Семенович
Чефранов Михаил Эдуардович
ЛИКВИДАТОР Помельников Юрий Михайлович
Ооо "Ук ПродимексСахар" Данькевич Григорий Николаевич
ИСПОЛНЯЮЩИЙ ОБЯЗАННОСТИ ГЕНЕРАЛЬНОГО А Астахов Анатолий Николаевич
Управляющий Фоминов Василий Иванович
Управляющий Ретунский Алексей Иванович
Быковец Людмила Сергеевна
Жабин Сергей Викторович
т.е. либо в строке правильно ФИО из трех слов и его не нужно трогать, либо впереди ФИО идет мусор.
Это реально очистить? Т.е. мне нужен вариант для 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.
Dram
В сети много примеров регулярок вычленяющих ФИО, но мне нужно очистить ФИО от мусора и не могу придумать регулярку, не поможите?
В моей базе ФИО всегда в конце, вот пример
т.е. либо в строке правильно ФИО из трех слов и его не нужно трогать, либо впереди ФИО идет мусор.
Это реально очистить? Т.е. мне нужен вариант для preg_replace
Mr. Guro
Dram
придумал, отвечаю по традиции сам себе
Mr. Guro
придумал, отвечаю по традиции сам себе
Ну вот, я и говорю, три рада одно и то же. А про оглы — конечно не подумал, в примере не было.
lutskboy
w+s+w+s+w+$
https://regex101.com/r/kZrLNd/1