Python-如何使用re来匹配整个字符串

时间:2013-04-11 17:00:38

标签: python string match

我正在验证用户输入的文本,以便它只接受字母而不接受数字。到目前为止,当我输入一个数字(例如56)时,我的代码工作正常,它警告我只应输入字母,当我输入字母时它不会返回任何内容(就像它应该做的那样)。我的问题是,当我开始输入字母后跟数字时它会接受它,例如(S45)。它的作用是接受第一个字母而不是整个字符串。我需要它接受整个字符串。

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

4 个答案:

答案 0 :(得分:39)

将其锚定到开头和结尾,并匹配一个或多个字符:

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

此处^定位到字符串的开头,$定位到最后,+确保您匹配1个或多个字符。

尽管如此,你最好只使用str.isalpha()。没有必要在这里找到沉重的正则表达式锤子:

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

答案 1 :(得分:4)

使用正则表达式+原始字符串中的边界来编码正则表达式,如下所示:

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

答案 2 :(得分:3)

您可以考虑在字符串上使用isalpha()。如果字符串只包含字母字符,则返回true,否则返回false。

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

答案 3 :(得分:0)

如果你寻找漂亮的pythonic着作,那就去找isalpha和isdecimal:

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