Python - как использовать re для соответствия целой строке

Я проверяю ввод текста пользователем, чтобы он принимал буквы, а не цифры. пока мой код отлично работает, когда я набираю число (например, 56), он предупреждает меня, что я должен писать только буквы, а когда я печатаю буквы, он ничего не возвращает (как и следовало бы делать). Моя проблема в том, что он принимает его, когда я начинаю с ввода букв, сопровождаемых цифрами, например. (S45). то, что он делает, это принять первую букву, но не всю строку. Мне нужно, чтобы он принял всю строку.

def letterCheck(aString):
    if len(aString) > 0:
        if re.match("[a-zA-Z]", aString) != None:
            return ""
    return "Enter letters only"

Ответ 1

Привяжите его к началу и концу и сопоставьте один или несколько символов:

if re.match("^[a-zA-Z]+$", aString):

Здесь ^ привязывается к началу строки, $ до конца, а + гарантирует соответствие 1 или более символов.

Лучше всего использовать str.isalpha(). Не нужно добираться до здорового регулярного выражения молота здесь:

>>> 'foobar'.isalpha()
True
>>> 'foobar42'.isalpha()
False
>>> ''.isalpha()
False

Ответ 2

используйте границы вашей строки regex + raw для кодирования регулярного выражения, например:

r"^[a-zA-Z]+$"

Ответ 3

Вы можете использовать isalpha() в строке. Он возвращает true, если строка содержит только буквенные символы, иначе false.

if aString.isalpha():
   do something
else:
   handle input error

Ответ 4

если вы ищете красивые пифонические произведения, перейдите к isalpha и isdecimal:

str = u"23443434";
print str.isdecimal();

Ответ 5

Вопрос на миллион долларов. Мой пост был отклонен из-за этого поста. Но, похоже, информации недостаточно для успешного вывода.

Мне нужно использовать регулярное выражение, чтобы найти ЛЮБОЙ ровно пять символов, включая перевод строки. У меня есть это до сих пор:

   five = "s6<\na"
   m = re.match(r"^.{5}$+",six,re.DOTALL)

Это ошибка, которую я получаю:

    File "q01d.py", line 10, in <module>
    m = re.match(r"^.{5}$+",five,re.DOTALL)
    sre_constants.error: nothing to repeat

Я не уверен, что именно мы здесь не так, но опубликую, если я решу это в промежутке.