2015-08-03 4 views
-3

В основном здесь мой код, и я не могу найти проблему с этим, поэтому я ищу совет.Как использовать регулярное выражение для имени лица?

name = raw_input('What\'s your name? ') 
if not re.match(r'[A-Za-z- ]+', name): 
    print 'Invalid name.\n' #error message 
+6

Обязательно: [обманов Программисты Believe об именах] (http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about -names /).田中 太郎 Смит будет очень недоволен, когда вы скажете ему, что его имя не реально. – Kevin

ответ

-3

Необходимо добавить конец линейного якоря. Без анкера foo? будет считаться допустимым. То есть, это имя не будет выводить сообщение Invalid name.

if not re.match(r'[A-Za-z- ]+$', name): 
    print 'Invalid name.\n' 

Пример:

>>> s = 'foo?' 
>>> if not re.match(r'[A-Za-z- ]+', s): 
    print('Invalid name.\n') 


>>> if not re.match(r'[A-Za-z- ]+$', s): 
    print('Invalid name.\n') 


Invalid name. 
+0

Спасибо, я не могу поверить, что это было так просто – Billy

+0

SInce вы новичок в StackOverflow, я предлагаю вам прочитать это http://stackoverflow.com/help/accepted-answer –

+0

Но что именно делает этот якорь в этом просто так я знаю для последующего использования. – Billy