Возможно ли реализовать такое используя регулярные выражения?

Есть имя Anf(как пример)

И есть список имен с суфиксами и префиксами произвольными

Anf| Excont |Paladin
SW:AV#Vasilysk±Papka
[BS:PWR] G-Grand (Select)
[SW:AV] Corleone
Firetrap
[Anf] Telnair (Mortal)
Fell
[Sw] Slades [Warrior]
EMP|Unsafe|Veteran
Face Control
[EMP] Xmax (Executor)
[BS:PWR] Xbos	
[Emp]Liones(Cadet)
[GG]«Asura°[Elite]
[EMP] Teo (Veteran)
[EMP:SO] Aristotle (Emperor)
Kid
[Emp] Slod?! (Military)
Meganf
Anferius
SW@@@@@@@Neal@@@@@@@STARTING
/rose/<>Blood Raven


причем если в ручную почистить от мусора:
Excont
Vasilysk
G-Grand
Corleone
Firetrap
Telnair
Fell
Slades
Unsafe
Face Control
Xmax
Xbos	
Liones
Asura
Teo
Aristotle
Kid
Slod
Meganf
Anferius
Neal
Blood Raven

Нужно как то определить входит ли имя Anf в этот список. По факту нужно удалить все лишнее в списке и оставить только то что подходит по правилам:
  • От 3х до 14 символов
  • Имя может состоять из нескольких слов
  • Слово не менее двух букв (Хотя G-Grand подходит из-за дефиса)
  • Между словами только пробел или дефис(пр. Obi-Van Kenobi)
  • Только один пробел и один дефис между словом
  • Только латиница и никаких символов кроме пробела и дефиса (Te-Re Wi-Fi)
  • Первая буква в слове заглавная


Как это реализовать я не представляю. А если у человека ник такой же как и префикс у другого? Например Anf и Anf|Test(Sith).
  • Вопрос задан
  • 2232 просмотра
Решения вопроса 1
Assada
@Assada Автор вопроса
Пока что у меня в голове родилось:
"Сплитуем" регуляркой [a-z\s-]+
uowgsIO.png

Если вышло >= 3х элементов - последний отсекаем(потому как скорее всего это суффикс), отсекаем первый (скорее всего префикс). При этом порядке 99% уверенность что все хорошо.
Если >=4 то тут есть проблемы с префиксами из нескольких слов(SW:AV:Vasilysk:Papka Test -> тут нужно только Vasilysk).

Короче сделаю выборку из 1000 строк и посмотрю все ли будет хорошо.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы