2010-11-08 2 views
-1

Как я могу написать регулярное выражение для Validate в «правильное имя человека»:Регулярное выражение в питона

Мое определение человека имя (в данном случае): мне нужно проверить испаноязычных имена: Что-то вроде Марии, Иоанна , джон, Андрес будет действовать, но что-то вроде 'NNNNNatalia' не

Я имею в виду это справедливо:

  • Диего
  • Диего А.
  • Диего А. Санабрия

Это не относится:

  • Diego 3
  • Diiiiiiiego
  • # $% эго
+8

Diiiiiiiego звучит как хорошее имя – colinjwebb

+5

Это плохо подходит для решений регулярных выражений. Вы ищете алгоритм проверки, а не регулярное выражение. –

+3

Какое * точное * ваше определение действительного имени человека? –

ответ

3

Я уверен, что кто-то еще имеет лучшее выражение, но ([A-Za-z.]+) ?([A-Z]\.?)? ?([A-Za-z]+) будет соответствовать вашему входному тексту. Он также будет соответствовать лотам прочего.

Это не будет соответствовать Mário или François или 優 恵. Он не будет совпадать с именами, содержащими более трех слов, или именами с переносимыми именами и т. Д. Он не будет соответствовать «Bobby Tables» ...

Предполагая, что вы работаете с именами, написанными латинскими символами, способный сопоставлять слова со списком первых имен. Когда вы находите первое имя (предполагая, что первые имена приходят первыми в ваших данных), затем проверяйте следующие пару слов, чтобы узнать, могут ли они также быть именами.

Обычно лучше, чтобы люди вводили свои собственные имена.

+0

это может работать для меня, но не проверяет буквы без ascii, вы знаете, как я могу это сделать? – diegueus9

+1

Вам нужно добавить все символы с акцентом в класс символов. Для испанского языка это должно быть нечто вроде '([A-Za-záéíóúñ] +)'. – Seth

+6

@ diegueus9 Это НЕ будет работать для вас ... вы быстро приближаетесь к ошибке Clbuttic и будете безжалостно издеваться над вашей командой, если вы даже подумаете о ее реализации. Читайте ближе, что говорит Сет ... он говорит: «Не используйте это». Его регулярное выражение будет даже соответствовать элементу в вашем собственном недействительном списке ... вы в настоящее время находитесь в той части карты, где написано «Here There Be Monsters». – Keng

6

Это далеко за рамки регулярных выражений , Вам понадобится словарь имен и, возможно, алгоритм для проверки вещей, которые не находятся в вашем словаре, но являются именами (сделайте некоторые исследования в Markov Chains для начала). Затем вам понадобится Natural Language Processingalgorithms, чтобы разобрать syntax для действительных имен.

Одним словом: получить степень в области компьютерных наук, и это может быть потенциальный проект диссертации.

Смежные вопросы